我正在尝试通过Apache代理运行https://github.com/dynastic/place。除了返回HTTP 200而不是HTTP 101的websocket之外,其他所有方法都有效,这会在Chrome和Firefox中导致错误。如何解决此问题?
Apache 2.4代理正在通过FreeNAS监狱[192.168.0.2]运行,仓库(Place)在Debian VM [192.168.0.3]上运行。代理从subdomain.domain.com开始,并路由到192.168.0.3:3000。一切正常,除了一个websocket,它在连接到http://192.168.0.3:3000时返回HTTP 101,但是在通过https://subdomain.domain.com连接时返回HTTP 200。
我在需要时可以提供的所有地方都有配置文件,但这是主要的配置文件。 SSL配置是在其他文件中定义的,并且SSL似乎不是我在HTTP上尝试过的问题。
sites-enabled/place.conf
:
<VirtualHost *:443>
ServerName subdomain.domain.com
ErrorLog /path/to/error.log
CustomLog /path/to/access.log combined
SSLProxyEngine On
ProxyRequests Off
ProxyPreserveHost On
<Location />
ProxyPass http://192.168.0.3:3000/
ProxyPassReverse http://192.168.0.3:3000/
</Location>
RequestHeader set Connection "Upgrade"
RewriteEngine on
RewriteCond %{HTTP:UPGRADE} ^WebSocket$ [NC]
RewriteCond %{HTTP:CONNECTION} ^Upgrade$ [NC]
RewriteRule .* wss://192.168.0.3:3000%{REQUEST_URI} [P]
</VirtualHost>
在Place GitHub存储库上的Readme.md中,它显示了一个Nginx存储库,该存储库理论上返回正确的HTTP 101代码(我在本地进行了测试)。 Apache错误地返回HTTP 200代码。我目前将Apache用于服务器上的其他服务,因此坚持使用会很不错,但是此时我可能不得不寻找其他选项。
答案 0 :(得分:0)
我最终通过简单地切换到Nginx并使用存储库中的示例代码来解决了这个问题。如果有人处在这种确切的情况下,我建议您不要经历我辛苦的工作,如果我的情况与您的情况相似,请切换。