上一篇文章讲了如何搭建单机的 emq 服务,如果说需要连接的客户端和 emq 服务不在一个网段,就无法访问该服务,接下来为该服务配置一个 nginx 网关,起到一个反向代理的作用。
安装 nginx
基于 ubuntu 20.04 搭建 nginx 环境
sudo apt-get install nginx # 在线安装
nginx -v # 查看 nginx 版本
service nginx start # 启动 nginx
启动成功以后,访问部署 nginx 的主机 http://{主机 IP} 会有如下提示
# nginx 其他操作命令
service nginx stop # 关闭 nginx 服务
service nginx restart # 重启 nginx 服务
配置 Nginx 网关
配置 nginx.conf
# 进入到 nginx.conf 所在的目录
cd /etc/nginx/
sudo gedit nginx.conf
新增如下内容
http {
、、、
map $http_upgrade $connection_upgrade {
default upgrade;
'' close;
}
upstream mqtt_ws_server {
#被代理的服务,可以写多个
server XXX.XXX.XXX.XXX:port;
}
server {
listen 8811; # nginx 监听的端口
location / {
proxy_pass http://mqtt_ws_server;
proxy_http_version 1.1;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_read_timeout 3600s;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $connection_upgrade;
}
}
}
通过在线测试工具连接 emq 服务验证 nginx 是否配置生效。
注意
实际开发中还是使用 wss 或者 ssl 进行连接较为稳妥。