0

我在家里的 Vagrant 虚拟机中使用mattermost。通过我的 DSL 路由器上的端口转发,我将 Web 前端映射到具有固定 IP 的 WAN vHost 上的子域上。

<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>

这很好用!在这种情况下,我将 Web 前端从端口 8090 映射到 vHost 子域上的端口 80。并且 Web 前端是可访问的。

但。

最重要的是使用另一个端口通过 Websockets 与 Web 前端通信。为此,我还从本地机器转发了 Websocket 端口。如果我正在访问动态 DNS 主机 URL:http://mappedsubdomain.somedyndns.tld:8090Web-Fontend 与第二个打开的 Websocket 端口一起工作得很好。Mattermost 可用于动态 DNS 主机 URL。

默认情况下,Websockets 使用端口 80。但就我而言,我在 Mattermost 中为 Websockets 使用端口 890。它在本地、局域网内和动态 DNS 主机上工作。

现在,我想用 Websocket 协议制作一个 ProxyReverse。

WAN-Host 是一个带有 Apache2.2 和加载mod_proxy_wstunnel模块的 Debian。

起初,我尝试简单地映射第二个端口:

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>

但什么都没有。Websockets 不工作。

然后我在运行 NodeJS Websocket Tunnel 的 WAN vHost 上尝试了它:

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。

有没有人对我有用的提示?

4

1 回答 1

0

@seekwhencer 本指南有帮助吗?https://docs.mattermost.com/install/config-proxy-apache2.html

对于 WebSocket 连接故障排除,此页面可能会有所帮助:https ://docs.mattermost.com/install/troubleshooting.html#please-check-connection-mattermost-unreachable-if-issue-persists-ask-administrator-to-check-网络套接字端口

于 2017-06-26T12:28:49.617 回答