问题标签 [mod-proxy-wstunnel]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
440 浏览

apache - Apache websocket 适用于 ProxyPass 但不适用于 RewriteRule

我正在尝试在 AWS ElasticBeanstalk Tomcat 8.5 Web 应用程序上启用 websocket。我有一个自定义 apache 配置(缩写):

在 Web 应用程序中,当我尝试将客户端 websocket 连接到服务器端点时,我收到此错误:

websocket.js:372 WebSocket 连接到“wss://example.com/ws/sales”失败:WebSocket 握手期间出错:意外响应代码:404

我在 Chrome 的开发人员工具中验证了发送到上述端点的请求中的 Connection 和 Upgrade 标头是正确的。(显然我真的连接到我的网站,而不是 example.com)

当我将 apache 配置更改为使用 ProxyPass 而不是 RewriteRule 时,它​​可以完美运行!我不想这样做,因为我不想仅仅基于 URI 代理到 ws。我想像你应该的那样检查标题!

0 投票
1 回答
172 浏览

apache - 如何通过 unix 套接字将 HTTP 和 Websockets 从 Apache 代理到 Gunicorn?

我的安装程序已经在我的虚拟主机中使用这两行通过 TCP 工作:

现在我想使用 unix 套接字。所以我在前面加上unix:$SOCKETPATH|并删除了端口:

它适用于 HTTP,但 websocket 连接失败。我尝试了 websockets 行右侧的变体,例如:

除了让它工作之外,我想了解为什么在管道 (|) 之后仍然需要部分?毕竟,Apache 应该只需要知道 unix 套接字路径,不是吗?ProxyPass上的Apache 文档没有解释这一点。

这些类似的问题没有帮助: