使用 SSL(和 docker)的 Apache 反向代理上的 Mosquitto

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

我想要做的是将 eclipse-mosquitto 作为 MQTT 代理运行在带有 SSL 的 Apache 反向代理后面。

我编写了以下 docker-compose 文件:

version: "3.9"

services:
  mosquitto:
    image: eclipse-mosquitto:2
    container_name: mosquitto
    ports:
      - "9100:9100"
    restart: always
    volumes:
      - mosquitto_data:/mosquitto/data
      - mosquitto_log:/mosquitto/log
      - ./mosquitto.conf:/mosquitto/config/mosquitto.conf

volumes:
  mosquitto_data: {}
  mosquitto_log: {}

以及以下

mosquitto.conf

persistence true
persistence_location /mosquitto/data/

log_dest file /mosquitto/log/mosquitto.log
log_dest stdout

port 1883
listener 9108
protocol websockets

现在,我想添加 Apache 反向代理以将 SSL 添加到我的代理。我通常使用子域来保持我在服务器上运行的服务分开。

这是我写的:

<VirtualHost *:443>
    ServerName mosquitto.example.com

    # SSL settings (mostly generated by Webmin)
    SSLEngine on
    SSLCertificateFile /home/example/ssl.cert
    SSLCertificateKeyFile /home/example/ssl.key
    SSLProtocol all -SSLv2 -SSLv3 -TLSv1 -TLSv1.1
    SSLCACertificateFile /home/example/ssl.ca

    # Proxy stuff
    ProxyPass /  ws://localhost:9100/
    ProxyPassReverse /  ws://localhost:9100/
</VirtualHost>

现在,在客户端上,

mosquitto_pub
给了我这个:

.\mosquitto_pub -h mosquitto.example.com -p 443 -u admin -p admin1234 -t 'test/topic' -m 'helloWorld'
Unable to connect (This feature is not supported.).

凭证是使用

mosquitto_passwd
创建的。

我做错了什么?

奖励问题: 我怎样才能做到这样我就不需要

-p 443

docker apache mqtt reverse-proxy mosquitto
1个回答
0
投票

mosquitto_pub
mosquitto_sub
命令不支持通过Websockets使用MQTT连接到代理。

您可以使用mqtt包附带的基于nodejs的工具

https://www.npmjs.com/package/mqtt#cli

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