如何将HAProxy与Web套接字RabbitMQ的Web MQTT一起使用并添加SSL / TLS?

问题描述 投票:1回答:1

我正在努力使HAProxy与RabbitMQ的Web MQTT(通过Web套接字的MQTT)一起使用。我尝试了一些配置和教程,但没有成功(haproxy blogBartKrol Githubs0urcec0de'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配置:

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实现相同的配置并且成功运行

(configuration based on their official documentation)

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?

设置:

  • Debian 10 x64
  • HAProxy 2.1.3
  • JavaScript Paho MQTT客户端1.1.0
  • Nginx 1.14.2
  • RabbitMQ 3.8.3
  • 这是在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)。 ...

websocket rabbitmq haproxy paho
1个回答
0
投票

有类似的问题。我不太熟悉haproxy来告诉您,您做错了什么。但我可以与您分享我的配置,它可以正常工作。永远不会使用后端be_mqtt_www,因此也许没有必要。

© www.soinside.com 2019 - 2024. All rights reserved.