【问题标题】:Apache mod_proxy: forward secure websocket to non-secureApache mod_proxy:将安全 websocket 转发到非安全
【发布时间】:2017-01-31 22:19:04
【问题描述】:

我依赖的 websocket 库 (PHP-Websockets) 还不支持安全套接字 (wss)。我的网站通过https 提供服务,所以我不能使用不安全的ws 连接。

我正在尝试使用Apache's mod_proxy 将来自浏览器的安全请求转发到客户端。

Javascript

var ws = new WebSocket('wss://example.com/_ws_/');

Apache 虚拟主机

ProxyPass        "/_ws_/" "ws://127.0.0.1:8080/"
ProxyPassReverse "/_ws_/" "ws://127.0.0.1:8080/"
# I've also tried "/_ws_/" "ws://example.com:8080/"  Same error below

在尝试连接时,浏览器会收到一个500 Server Error。日志显示:

没有对 URL /_ws_/ 有效的协议处理程序。如果您使用的是 DSO 版本的 mod_proxy,请确保代理子模块包含在使用 LoadModule 的配置中。

我已经确认,如果我删除代理规则,停止将用户重定向到 https 并尝试从浏览器连接到不安全的套接字:new WebSocket('ws://example.com/'),一切正常。

我加载的 Apache 模块包括 mod_ssl.cmod_proxy.cmod_proxy_http.c

Apache 2.4

【问题讨论】:

  • 我对 bitnami tomcat 堆栈有类似的问题。不幸的是,我没有足够的技能来设置 mod 代理,我完全删除了 apache2 网络服务器。但请查看此对话,可能会有所帮助:community.bitnami.com/t/tomcat-8-websockets/39477/3
  • @degr 感谢您的链接
  • mod_proxy_wstunnel 模块呢?
  • @gre_gor 我花了一整夜才意识到这就是我所缺少的。我回来写了我的解决方案,但如果你愿意(如果是这样,请提供文档链接:httpd.apache.org/docs/2.4/mod/mod_proxy_wstunnel.html),我很乐意选择你的答案。

标签: apache ssl websocket mod-proxy


【解决方案1】:

要反向代理 WebSockets,您还需要加载 mod_proxy_wstunnel 模块。

【讨论】:

    猜你喜欢
    • 2012-02-13
    • 2021-08-06
    • 2013-01-23
    • 2015-10-12
    • 2012-09-04
    • 1970-01-01
    • 2013-01-27
    • 2018-03-21
    • 2017-12-15
    相关资源
    最近更新 更多