首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用WebSockets重定向后端服务器的规则

问使用WebSockets重定向后端服务器的规则
EN

Stack Overflow用户
提问于 2012-08-22 00:29:11
回答 1查看 3.5K关注 0票数 2

我试图弄清楚如何正确地为后端CherryPy服务器设置Apache重定向规则,该服务器实现了websocket (通过ws4py模块完成)。问题是,如果您使用重写引擎或代理程序,它会在重定向请求中删除升级头,因此CherryPy服务器会抱怨它,并在握手步骤中失败。

下面是我的场景。我有CherryPy服务器和ws4py模块,它设置了WebSockets。它运行在localhost:9000上。我想要apache前端,它只是将传入的请求重定向到后端服务器(它所做的还不止这些,但为了简单起见,它应该这样做)。

我的apache规则很简单

代码语言:javascript
复制
RewriteRule ^(/websocket(/.*)?)$ http://some_host:9000$1 [P,L]

因此,对于从/websocket开始的所有请求,它都会将它们重定向到运行在端口9000上的后端服务器。P标志代表代理,L停止重写过程(参见http://borkweb.com/story/apache-rewrite-cheatsheet)

如果客户端发送带有header Upgrade:websocket的请求,则apache (重写模块)将其剥离,这将导致WebSocket握手失败。

是否有任何方法来修正重写规则以允许出现升级头?

EN

回答 1

Stack Overflow用户

发布于 2012-08-24 16:31:15

不幸的是,Apache还没有能力逆转代理WebSocket连接(绝对应该如此!)但是有一种解决方案,允许使用Apache和WebSocket连接来处理web请求。这个解决方案包括使用HAProxy作为apache和WebSocket服务器的前端。

下面是几个相关的链接,让您开始:

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12064882

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档