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 连接

vue-socket.io跨域问题的解决方法

连接错误:io.socket.engineio.client.EngineIOException:xhr 轮询错误

nginx、node.js 和 socket.io - 有工作婚姻吗?

跨域解决方法