繁体   English   中英

Apache:当需要HTTP 101时,Websocket通过代理返回HTTP 200

[英]Apache: Websocket returning HTTP 200 over proxy when needing HTTP 101

我正在尝试通过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用于服务器上的其他服务,因此坚持使用会很不错,但此时我可能不得不寻找其他选择。

我最终只是通过切换到Nginx并使用存储库中的示例代码来解决了问题。 如果有人处在这种确切的情况下,我建议不要经历我辛苦的工作,如果我的情况与您的情况相似,请立即进行切换。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM