Как настроить 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 через веб-клиент или через какое-либо встроенное устройство или смартфон, или все можно подключить к Интернету.

0 ответов

Другие вопросы по тегам