gpt4 book ai didi

apache - 在 Apache mod_proxy_wstunnel 后面使用 go-websocket

转载 作者:IT老高 更新时间:2023-10-28 13:08:42 25 4
gpt4 key购买 nike

注意:更新了配置并在 websocket 路径中添加了斜杠。还是一样的问题

是否可以使用go-websocket使用 mod_proxy_wstunnel 的 Apache 反向代理?

我尝试过,但没有成功。

我尝试使用 the Chat example在 Apache 反向代理后面(启用 mod_proxy_wstunnel)。它不起作用。代理成功了,而websocket部分完全不行。

我的 Apache 配置如下所示:

<VirtualHost *:80>
DocumentRoot /var/www/foobar
ServerName foobar.com
ProxyPass / http://localhost:8080/
ProxyPassReverse / http://localhost:8080/
ProxyPass /ws/ ws://localhost:8080/ws/
ProxyPassReverse /ws/ ws://localhost:8080/ws/
ErrorLog logs/error_log-foobar
CustomLog logs/access_log-foobar common
LogLevel debug
</VirtualHost>

当然,我在 8080 端口上运行聊天服务器。我已经使用 SSH 隧道对其进行了测试,一切正常。然后我转向 Apache。

我第一次尝试时,javascript 控制台报错:

NetworkError: 403 Forbidden - http://foobar.com/ws/

请求似乎停留在源检查中。然后我在注释掉原点检查后再次尝试,它得到了这个:

NetworkError: 400 Bad Request - http://foobar.com/ws/

聊天服务器似乎根本没有收到升级请求。

我应该如何调试这个?我应该从哪里开始寻找?

最佳答案

谢谢大家!看了以上几条建议,终于找到了解决办法。

对于可能有类似问题的人,这是我的问题的解决方案:

  1. 作为 Aralo建议,必须将尾部斜杠添加到 WebSocket 路径(在我的情况下:“/ws/”)。看起来 Apache 只会处理带有有效 GET 请求的 WebSocket。

  2. James Henstridge是正确的。 ProxyPass 的顺序相关。/ws/的ProxyPass必须放在/行之前。

  3. 查阅Chat示例代码后发现an origin check在函数 ServeWs()并删除。

现在一切正常。

感谢 covener ,阅读日志确实有帮助。

关于apache - 在 Apache mod_proxy_wstunnel 后面使用 go-websocket,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18784658/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com