我正在尝试设置一个反向代理,将localhost:8081解析为安装在其他机器上的代理。我的Nginx配置文件是:
worker_processes 1;
events {
worker_connections 1024;
}
server {
listen 8081;
server_name localhost;
location / {
proxy_pass tcp://192.168.1.177:1883;
}
}
但是当我尝试连接到代理(从我配置Nginx的机器)时
mosquitto_sub -h localhost -p 8081 -t "stat/tasmota_8231A8/POWER1"
出现错误Connection refused。
编辑:Mosquitto broker配置:
persistence true
persistence_location /var/lib/mosquitto/
include_dir /etc/mosquitto/conf.d
listener 1883
allow_anonymous true
编辑我尝试使用此配置文件为nginx worker_processes 1;
events {
worker_connections 1024;
}
stream {
listen 8081;
proxy_pass 192.168.1.77:1883;
}
3条答案
按热度按时间yhuiod9q1#
这对原生MQTT不起作用。
您配置的是HTTP代理,但MQTT!= HTTP。
您需要将nginx配置为流代理。例如
https://docs.nginx.com/nginx/admin-guide/tcp-udp-load-balancer/
或者将mosquito配置为支持MQTT over WebSockets(假设客户端也支持此功能)。然后,您可以使用基于HTTP的代理作为通过HTTP的WebSockets bootstrap。
qco9c6ql2#
我让你的场景完全使用以下配置(防火墙关闭,SELinux设置为许可):
nginx config(在loadbalancer 1上):
}
mqtt-node-1和mqtt-node-2上的mqttto配置:
qrjkbowd3#
拒绝连接表示尝试连接到没有服务正在侦听的端口。请验证nginx服务正在运行,并且确实存在侦听器。您可以通过以下方式实现此目的
此命令将显示占用的端口。nginx监听器的配置端口应该出现在列表中