nginx 和 socket.io 解决方法
Posted
技术标签:
【中文标题】nginx 和 socket.io 解决方法【英文标题】:nginx and socket.io workaround 【发布时间】:2012-04-11 14:39:53 【问题描述】:目前,在处理 Web 套接字时,很难绕过大多数反向代理(nginx、HAproxy)。我在想有可能做这样的事情:
io.connect("http://yourdomain:8080/chat"); // with namespace
所以一个示例工作流程是:
nginx 监听 80 端口 nodejs 监听 8080 端口 socket.io 通过 nodejs 应用监听 8080 端口 nginx 将端口 80 上的任何请求代理到 8080 上的 nodejs socket.io 客户端直接连接到端口 8080 上的节点/套接字服务器并直接通信,无需反向代理参与我无法让它工作 - 是不可能的,还是我做错了什么?
编辑:这确实有效,我的问题是将 MongoDB
_id
字段发送到客户端。
我写了更详细的描述here
【问题讨论】:
你看过proxy_buffering
选项吗?
查看我对 [an early question][1] [1] 的(未接受的)回答:***.com/questions/9749070/…
感谢 cmets!我试图做的是绕过对 nginx 进行任何调整。实际上上面的代码有效,问题出在mongoDB上。所以你实际上可以在 socket.io 连接中指定一个端口并完全围绕 nginx 路由它。
【参考方案1】:
一旦 NGINX 1.3 发布,我应该可以使用它。 1.2 版增加了对 HTTP/1.1 协议的支持,这是必不可少的部分。
【讨论】:
以上是关于nginx 和 socket.io 解决方法的主要内容,如果未能解决你的问题,请参考以下文章
okhttp 2.5 超时更改破坏 socket.io-client 的解决方法
nginx 1.2.0 - socket.io - HTTP/1.1 - 代理 websocket 连接
连接错误:io.socket.engineio.client.EngineIOException:xhr 轮询错误