Как настроить proxypass для сервера mosca в Apache
У меня проблема, когда я пытаюсь сделать мой сервер mosca общедоступным в Интернете. Я кодирую свое приложение MQTT Nodejs, но мой сервер apache. Мой mosca.js работает на порту 8080 для обработки всех запросов методом mqtt, и я хочу направить его на mysubdomain.com/server. Мой express.js работает на порте 8081, чтобы отобразить пользовательский интерфейс для клиента, и он направляется на mysubdomain.com/. Я настраиваю 000-default.conf в apache следующим образом:
<VirtualHost *:80>
ServerName mysubdomain.com
ServerAlias www.mysubdomain.com
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
<Proxy *>
Order deny,allow
Allow from all
</Proxy>
RewriteEngine On
RewriteCond %{HTTP:Upgrade}=^websocket$ [NC]
RewriteRule ^server$ ws://10.80.31.107:8080/$1 [P,L]
ProxyRequests off
ProxyPreserveHost on
ProxyPass /server/ ws://10.80.31.107:8080/
ProxyPassReverse /server/ ws://10.80.31.107:8080/
ProxyPass / http://10.80.31.107:8081/
ProxyPassReverse / http://10.80.31.107:8081/
</VirtualHost>
И я использую mqtt.js для подключения к mosca в js-файле следующим образом:
var client = mqtt.connect("ws://mysubdomain.com/server");
Мой express.js работает нормально, но я не могу проксипропустить мой сервер mosca. Если я подключаюсь по IP-адресу, он работает нормально, но только в локальной сети. Я открыл прокси-модуль, proxy_http, proxy_wstunnel,..., все для поддержки proxypass, и я искал везде решение, но ничего не работает.
Я хочу, чтобы он работал как cloudmqtt, чтобы я мог общаться с сервером mqtt через веб-клиент или через какое-либо встроенное устройство или смартфон, или все можно подключить к Интернету.