安装Nginx
此处使用Ubuntu22.04LTS系统,通过源码编译安装的方式安装Nginx。你也可以使用Docker或二进制包安装Nginx。
环境要求
在编译和安装 Nginx 前,需要确保系统中已经安装了以下依赖项:
GNU C 和 C++ 编译器
PCRE (Perl Compatible Regular Expressions) 库
zlib 压缩库
OpenSSL 库
可以使用以下命令在 Ubuntu 系统中安装以上依赖项:
sudo apt-get update
sudo apt-get install build-essential libpcre3-dev zlib1g-dev libssl-dev
下载源码
可以从 Nginx官方网站下载最新的稳定版本,例如:
wget https://nginx.org/download/nginx-1.24.0.tar.gz
编译配置命名
下载完成后,需要解压并进去源码目录
tar -zxvf nginx-1.24.0.tar.gz
cd nginx-1.24.0
使用以下命令进行编译配置:
./configure \
--with-threads \
--with-http_stub_status_module \
--with-http_ssl_module \
--with-http_realip_module \
--with-stream \
--with-stream_ssl_module
其中 --with-http_ssl_module 参数用于添加 SSL 功能支持,--with-stream 与 --with-stream_ssl_module 参数用于添加 TCP 反向代理支持。
开始编译
完成配置后,可以使用以下命令开始编译:
make
安装
编译完成后,可以使用以下命令安装 Nginx:
sudo make install
将 Nginx 可执行文件连接到系统 PATH 中的目录:
sudo ln -s /usr/local/nginx/sbin/nginx /usr/local/bin/nginx
开始使用
Nginx 的配置文件默认位于 /usr/local/nginx/conf/nginx.conf,将本页的配置示例添加到文件末尾即可。Nginx 基本操作命令如下:
检查配置文件:
sudo nginx -t
如果 Nginx 配置文件验证成功,则可以启动 Nginx:
sudo nginx
重新加载正在运行的 Nginx 并应用新配置,建议在操作前检查配置是否无误:
sudo nginx -s reload
停止 Nginx:
sudo nginx stop
反向代理MQTT broker
Nginx作为负载均衡器将来自客户端的请求分发到多个后端服务器,以确保负载平衡和性能优化。Nginx 非常适用于物联网应用,因为它可以处理大量的并发请求。在物联网中,设备数量庞大,因此需要一个可以处理大量请求的服务器来保证稳定性。EMQX 原生支持由多个 MQTT 服务器组成的分布式集群架构,因此,使用 Ngnix 部署负载均衡以及 EMQX 集群,可以保证高可用性和可扩展性,所以在这里我们运用Nginx的反向代理,实现EMQX(MQTT Broker)的冗余备份和负载均衡。
我们可以在 Nginx 的配置文件中添加以下配置来反向代理来自客户端的 MQTT 连接请求,将请求转发至后端 MQTT 服务器。
stream {
upstream mqtt_servers {
# down:表示当前的 server 暂时不参与负载
# max_fails:允许请求失败的次数;默认为 1
# fail_timeout:失败超时时间,默认 10s, max_fails 达到次数后暂停的请求时间
# backup:其它所有的非backup机器down或者忙的时候,请求backup机器
server 172.18.157.180:1883 max_fails=2 fail_timeout=10s;
server 172.18.157.179:1883;
}
server {
listen 1884;
proxy_pass mqtt_servers;
# 启用此项时,对应后端监听器也需要启用 proxy_protocol
proxy_protocol on;
proxy_connect_timeout 10s;
# 默认心跳时间为 10 分钟
proxy_timeout 1800s;
proxy_buffer_size 3M;
tcp_nodelay on;
}
}
修改好配置后,使用nginx -s reload
重新加载正在运行的 Nginx 并应用新配置。
这时候,我们可以用MQTT客户端连接nginx的端口号,然后nginx就会代理我们的请求,采用轮询负载均衡策略,将请求依次分配给每个后端服务器,循环往复。
标签:nginx,--,sudo,module,Nginx,MQTT,emqx From: https://www.cnblogs.com/ydqblogs/p/17911890.html