我想用nginx proxy_pass模块替换我的node-http-proxy模块。是否可以使用新发布的nginx版本,正如我已经读过的那样,它支持开箱即用的HTTP / 1.1。我看到一些与这个问题相关的线程,nginx不支持websockets。
在我的情况下,我在后台运行几个节点项目,并希望将我的websocket连接从端口80路由到8000-8100,具体取决于域。有没有使用tcp_module插件进行websocket代理/反向代理的本地方法?
我尝试使用proxy_passing在nginx.conf中设置上游,但是如果我尝试通过websocket连接到端口80,我会收到502网关错误。
任何人都面临同样的问题? 有没有人有一个nginx + spcket.io的工作示例,通过端口80进行代理?
答案 0 :(得分:35)
不,这还不可能; nginx 1.2包含来自1.1.x开发分支的东西,它确实包含HTTP / 1.1反向代理。 Websocket连接是使用HTTP / 1.1“Upgrade”标头建立的,但是nginx现在支持这种标头并不意味着它支持websockets(websockets是不同的协议,而不是HTTP)。 (我自己尝试使用1.1.x分支(我发现它足够稳定以达到我的目的)并且没有tcp_module它就无法工作)
1.3.x(http://trac.nginx.org/nginx/roadmap)可能会支持Websockets。
您的替代方案是:
答案 1 :(得分:0)
关于使用TCP模块的NginX,我遇到的问题很少。 但最棘手的是尝试在EC2实例上的端口80上运行带有nginx的websockets。
我描述了整个配置here