首页 > 后端开发 > Golang > 为什么我的 mod_proxy_wstunnel 和 Go-websocket 设置失败,如何修复?

为什么我的 mod_proxy_wstunnel 和 Go-websocket 设置失败,如何修复?

DDD
发布: 2025-01-01 06:58:10
原创
549 人浏览过

Why Does My mod_proxy_wstunnel and Go-websocket Setup Fail, and How Can I Fix It?

Mod_proxy_wstunnel 和 Go-websocket:一个问题及其解决方案

在尝试将 Apache 的 mod_proxy_wstunnel 与 go-websocket 实现结合使用时,用户可能会遇到障碍。一位用户寻求帮助来配置必要的设置。

提供了问题的详细描述:虽然反向代理成功建立,但 Websocket 连接无法启动。用户的配置反映了以下内容:

<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>
登录后复制

最初,用户收到“403 Forbidden”响应,这表明存在来源检查问题。禁用来源检查后,错误转变为“400 Bad Request”,表明服务器没有收到升级请求。

在收集了众多来源的建议后,用户得出了一个解决方案:

  1. 尾部斜杠: 正如 Aralo 指出的,向 WebSocket 路径添加尾部斜杠(“/ws/”)至关重要。 Apache 似乎需要有效的 GET 请求才能进行 WebSocket 处理。
  2. ProxyPass 顺序: James Henstridge 正确地指出 ProxyPass 指令的顺序很重要。 “/ws/”的 ProxyPass 应位于常规“/”之前。
  3. 来源检查删除: go-websocket 示例代码在 ServeWs() 函数中包含来源检查,这会导致已删除。

实施这些更改解决了问题,并且用户能够成功建立 Websocket Apache mod_proxy_wstunnel 背后的连接。

以上是为什么我的 mod_proxy_wstunnel 和 Go-websocket 设置失败,如何修复?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板