加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 运营中心 > Nginx > 正文

node.js – nginx作为NodeJS socket.io的代理:除了大消息外,

发布时间:2020-12-13 21:38:46 所属栏目:Nginx 来源:网络整理
导读:正如在nginxs website上所解释的那样,我已经将这些设置用于我的nginx,以将websockets代理到NodeJS服务器: location /socket.io/ { proxy_pass http://backend; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connecti

正如在nginx’s website上所解释的那样,我已经将这些设置用于我的nginx,以将websockets代理到NodeJS服务器:

location /socket.io/ {
    proxy_pass http://backend;
    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection "upgrade";
}

一切正常,socket.emit()/ socket.on()互相发送消息;直到我发送一条相当大的短信(26 kB的html).

> NodeJS没有收到这条大消息(所以我猜这个问题是在nginx方面)
> nginx日志没有错误
>一旦客户发送了这条大消息,NodeJS将停止从该客户端接收socket.io的心跳.

我究竟做错了什么?
是否有我不知道的nginx设置?

最佳答案
找到的“解决方案”是使用haproxy在nginx和NodeJS之间拆分tcp流.

它不是最优的,因为它在我们的堆栈中添加了另一个程序,但它完成了这项工作.

在我看来,nginx websocket支持还远远没有准备好生产.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读