Apache2 Websocket Proxy для Mattermost с динамического хоста DNS
Я использую материально локально дома в Vagrant Virtual Machine. С переадресацией портов на моем DSL-маршрутизаторе я сопоставляю веб-интерфейс на подобласти в моем WAN vHost с фиксированным IP.
<VirtualHost *:80>
ServerName chat.domain.tld
ServerSignature Off
ProxyPreserveHost On
<Location />
Order deny,allow
Allow from all
ProxyPassReverse http://chat.domain.tld/
</Location>
RewriteEngine on
RewriteCond %{DOCUMENT_ROOT}/%{REQUEST_FILENAME} !-f
RewriteRule .* http://mappedsubdomain.somedyndns.tld:8090%{REQUEST_URI} [P,QSA]
DocumentRoot /somewhere/on/my/disk
</VirtualHost>
И это прекрасно работает! В этом случае я сопоставил веб-интерфейс от порта 8090 с портом 80 на поддомене vHost. И Веб-интерфейс доступен.
Но.
материя использует другой порт для связи с веб-интерфейсом через веб-сокеты. Для этого я также перенаправил порт Websocket с моей локальной машины. Если я получаю доступ к динамическому URL хоста DNS: http://mappedsubdomain.somedyndns.tld:8090
Web-Fontend хорошо работает со вторым открытым портом для Websockets. Mattermost можно использовать на URL-адресе динамического DNS.
По умолчанию Mattermost использует порт 80 для веб-сокетов. Но в моем случае я использую порт 890 для веб-сокетов в Mattermost. Он работает локально, внутри локальной сети и через узел динамического DNS.
Теперь я хочу сделать ProxyReverse с протоколом Websocket.
WAN-Host - это Debian с Apache2.2 и загруженным mod_proxy_wstunnel
Модуль.
Сначала я попытался просто сопоставить второй порт:
Listen 890
<VirtualHost *:890>
ServerName chat.domain.tld
ServerSignature off
ProxyRequests off
RewriteEngine on
RewriteCond %{HTTP:Upgrade} =websocket [NC]
RewriteRule /(.*) ws://mappedsubdomain.somedyndns.tld:890/$1 [P,L]
RewriteCond %{HTTP:Upgrade} !=websocket [NC]
RewriteRule /(.*) http://mappedsubdomain.somedyndns.tld:890/$1 [P,L]
<Location />
Order deny,allow
Allow from all
ProxyPassReverse http://mappedsubdomain.somedyndns.tld:890/
ProxyPassReverse ws://mappedsubdomain.somedyndns.tld:890/
</Location>
DocumentRoot /somewhere/on/my/disk
</VirtualHost>
Но ничего. Веб-сокеты не работают.
Затем я попробовал его в WAN vHost с запущенным NodeJS Websocket Tunnel:
https://www.npmjs.com/package/wstunnel
С этим звонком:
wstunnel -t 8091 ws://mappedsubdomain.somedyndns.tld:890/
и с измененной конфигурацией виртуального хоста:
RewriteRule /(.*) ws://localhost:8091/$1
RewriteRule /(.*) http://localhost:8091/$1 [P,L]
ProxyPassReverse ws://localhost:8091/
ProxyPassReverse http://localhost:8091/
когда wstunnel
работает, HTTP-запрос на chat.domain.tld:890
заканчивается тайм-аутом. Без wstunnel
У меня есть 503.
Есть кто-нибудь полезный совет для меня?
1 ответ
@seekwhencer Поможет ли это руководство? https://docs.mattermost.com/install/config-proxy-apache2.html
Для устранения неполадок подключений WebSocket эта страница может помочь: https://docs.mattermost.com/install/troublesho.html#please-check-connection-mattermost-unreachable-if-issue-persists-ask-administrator-to-check- WebSocket-порт