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-порт

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