nginx1.2.0-socket.io-HTTP/1.1-Proxy-websocket连接

nginx1.2.0-socket.io-HTTP/1.1-Proxy-websocket连接,proxy,nginx,websocket,socket.io,reverse-proxy,Proxy,Nginx,Websocket,Socket.io,Reverse Proxy,我想用nginx proxy\u pass模块替换我的节点http代理模块。正如我所读到的,新发布的nginx版本是否可能支持HTTP/1.1开箱即用。我看到一些线程在处理这个问题,即nginx不支持websockets 在我的例子中,我在后台运行几个节点项目,希望根据域的不同,将我的websocket连接从端口80路由到8000-8100。是否有一种不使用tcp_模块插件而执行websocket代理/反向代理的本机方法 我尝试在nginx.conf中设置一个上游,并将代理_传递给它,但如果我尝

我想用nginx proxy\u pass模块替换我的节点http代理模块。正如我所读到的,新发布的nginx版本是否可能支持HTTP/1.1开箱即用。我看到一些线程在处理这个问题,即nginx不支持websockets

在我的例子中,我在后台运行几个节点项目,希望根据域的不同,将我的websocket连接从端口80路由到8000-8100。是否有一种不使用tcp_模块插件而执行websocket代理/反向代理的本机方法

我尝试在nginx.conf中设置一个上游,并将代理_传递给它,但如果我尝试通过websocket连接到端口80,则会出现502网关错误

有人面临同样的问题吗?
是否有人有nginx+spcket.io通过端口80代理的工作示例?

没有,这还不可能;nginx1.2合并了1.1.x开发分支的内容,该分支实际上包括HTTP/1.1反向代理。Websocket连接是使用HTTP/1.1“升级”头建立的,但nginx现在支持这种头并不意味着它支持Websocket(Websocket是不同的协议,而不是HTTP)。 (我自己使用1.1.x分支尝试了这一点(我发现对于我的目的来说,它足够稳定),没有tcp_模块它就无法工作)

WebSocket可能在1.3.x()中得到支持

你的选择是:

  • 继续使用节点http代理
  • 使用无tcp模块的nginx;socket.io将不使用WebSocket,而是使用其他内容(例如长轮询)
  • nginx with tcp模块:在这种情况下,我认为您需要为该模块添加一个额外的端口(我自己从未尝试过)
  • 将其他东西放在前面作为反向代理:我在nginx和node前面使用HAProxy(支持websockets)。Nginx现在只是充当静态文件服务器,而不是代理。如果您需要额外的缓存,则Varnish是另一个选项

关于使用TCP模块的NginX,我遇到的问题很少。 但最棘手的一个问题是尝试在EC2实例的端口80上使用nginx运行WebSocket


我描述了整个配置

使用该插件是本机方式。是的,这是可能的。要进行故障排除,如果您将nginx.conf.Thx包括在内以进行澄清,这将非常有用。对我来说,nginx支持websocket代理是很自然的,如果它附带了HTTP1/1。我知道这不是HTTP协议,但我仍然需要做一些功课:)在撰写本文时,Nginx 1.3已经发布并支持WebSocket。这是一个非常简单的配置,我希望能有所帮助。