我正在努力使HAProxy与RabbitMQ的Web MQTT(通过Web套接字的MQTT)一起使用。我尝试了一些配置和教程,但没有成功(haproxy blog,BartKrol Github,s0urcec0de's Github)。也尝试设置HAProxy和RabbitMQ with Proxy Protocol失败。
我真的很想在此上使用HAProxy,但是我很难过。
我的意图是在浏览器中使用Javascript Paho MQTT客户端连接到RabbitMQ Web套接字MQTT代理,在它们之间,HAProxy将是使用提供的TLS / SSL证书(也称为SSL / TLS卸载)的加密http / ws连接。] >
[当尝试使用HAProxy打开安全的Websocket连接时,浏览器会收到HTTP / 1.1 503服务不可用响应
RabbitMQ Server正在本地主机上监听未加密的websocket mqtt连接:15675
HAProxy正在监听ws.mydomain.io:3001
这是HAProxy配置:
(configuration based on their official documentation)。global log 127.0.0.1 local0 defaults log global option httplog timeout client 5000s timeout connect 5000s timeout queue 5000s timeout server 5000s frontend https bind *:3001 ssl crt /usr/local/etc/haproxy/mydomain.io.pem mode http log global backlog 4096 default_backend web_mqtt backend web_mqtt mode http option forwardfor server ws_01 localhost:15675
我尝试使用Nginx实现相同的配置并且成功运行
Nginx正在ws.mydomain.io:3000上监听
server { listen 3000 ssl; server_name ws.mydomain.io; ssl_certificate /home/tiago/Keys/mydomain/nginx/mydomain.io.crt; ssl_certificate_key /home/tiago/Keys/mydomain/nginx/mydomain.io.key; location / { proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $host; proxy_pass http://ws-backend; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; } } upstream ws-backend { # enable sticky session based on IP ip_hash; server localhost:15675; }
RabbitMQ的配置(rabbitmq.conf):
log.connection.level = info loopback_users.guest = false listeners.tcp.default = 5672 # proxy_protocol = true web_mqtt.tcp.port = 15675
HAProxy配置中缺少什么?
Nginx如何代理请求而不是HAProxy?
设置:
这是在Firefox中尝试与Paho MQTT lib安全进行websocket连接后的响应:
GET https://ws.mydomain.io:3001/ws [HTTP/1.1 503 Service Unavailable 3027ms] Request URL:https://ws.mydomain.io:3001/ws Request method:GET Remote address:127.0.0.1:3001 Status code: 503 Version:HTTP/1.1 Response headers (126 B) Raw headers cache-control no-cache connection close content-length 107 content-type text/html Request headers (484 B) Raw headers Accept */* Accept-Encoding gzip, deflate, br Accept-Language en-US,en;q=0.5 Cache-Control no-cache Connection keep-alive, Upgrade Host ws.mydomain.io:3001 Origin http://localhost:8123 Pragma no-cache Sec-WebSocket-Extensions permessage-deflate Sec-WebSocket-Key XXXXXXXXXXXXXXXX== Sec-WebSocket-Protocol mqtt Sec-WebSocket-Version 13 Upgrade websocket User-Agent Mozilla/5.0 (X11; Linux x86_64…) Gecko/20100101 Firefox/68.0
这是Firefox消息:
Firefox can’t establish a connection to the server at wss://ws.mydomain.io:3001/ws.
我正在努力使HAProxy与RabbitMQ的Web MQTT(通过Web套接字的MQTT)一起使用。我尝试了一些配置和教程,但没有成功(haproxy博客,BartKrol Github,s0urcec0de的Github)。 ...
有类似的问题。我不太熟悉haproxy来告诉您,您做错了什么。但我可以与您分享我的配置,它可以正常工作。永远不会使用后端be_mqtt_www
,因此也许没有必要。