Маршрут mqtt и трафик websocket c через apache2 - PullRequest
0 голосов
/ 21 апреля 2020

У меня настроен брокер emqx в Ubuntu EC2. enter image description here

Когда я пытаюсь подключиться к emqx через веб-сокет с IP-адресом, он работает нормально. enter image description here Но когда я использую поддомен, соединение не устанавливается. Моя Apache Конфигурация

    <VirtualHost *:80>
  ServerName subdomain.example.com
  ServerAlias subdomain.example.com
  ServerAdmin admin@domain.in

  RewriteEngine On
  #RewriteCond %{REQUEST_URI}  ^/socket.io            [NC]
  #RewriteCond %{QUERY_STRING} transport=websocket    [NC]
  RewriteCond %{HTTP:Upgrade} =websocket [NC]
  RewriteRule ^/mqtt/(.*)           ws://localhost:8083/mqtt/$1 [P,L]

  ProxyPreserveHost On
  ProxyRequests Off

  ProxyPass / http://localhost:8083/
  ProxyPassReverse / http://localhost:8083/

  ErrorLog ${APACHE_LOG_DIR}/error.log
  CustomLog ${APACHE_LOG_DIR}/access.log combined

</VirtualHost>

Apache access logs Apache Журналы доступа

enter image description here Я изменил уровень журнала apache до 'debug', и это журналы ошибок. Похоже, он пытается найти папку / mqtt.

Я уже включил режим "proxy_wstunnel.load". Как я могу подключиться к mqtt и ws, используя поддомен?

1 Ответ

0 голосов
/ 21 апреля 2020

Добавить директиву ServerAlias в ServerName

Пример:

ServerName domain.com
ServerAlias subdomain.domain.com

Try adding this too

ProxyPass "/" "http://127.0.0.1:8083/mqtt"
ProxyPassReverse "/" "http://127.0.0.1:8083/mqtt"

Если вы не уверены, использует ли брокер socket.io, удалите эту строку :

#RewriteCond %{REQUEST_URI} ^/socket.io

...