千家信息网

nginx代理socket.io服务有哪些坑

发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,这篇文章主要为大家展示了"nginx代理socket.io服务有哪些坑",内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下"nginx代理socket.io服务有
千家信息网最后更新 2026年11月02日nginx代理socket.io服务有哪些坑

这篇文章主要为大家展示了"nginx代理socket.io服务有哪些坑",内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下"nginx代理socket.io服务有哪些坑"这篇文章吧。

nginx代理了两台socket.io服务器。socket.io的工作模式是polling升级到websocket

现象

通过nginx请求服务时,出现了大量的400错误,有时候能升级到websocket,有时候会一直报错。但是直接通过 ip+端口 访问时,100%能成功。

分析

sid

sid是我们这个问题的关键。在初始创建连接时(polling模式就是在模拟一个长连接),客户端会发起这样的请求:

https://***/?EIO=3&transport=polling&t=1540820717277-0

服务端收到后会创建一个对象,绑定在这个连接上,同时返回一个sid(session id),来标记这个会话。会话指什么呢,会话是一连串的交互,这些交互之间是有联系的,在我们这个场景下就是,下一次的http请求到来,我需要找到之前绑定在理论上的长连接(这里还没有websocket,所以是理论上的)上的那个对象。我们知道http请求是无状态的,每个请求之间独立,所以socket.io引入了sid来做这件事。服务端收到请求后会生成一个sid,看下response:

复制代码 代码如下:

{"sid":"EoGaL3fRQlpTOaLp5eST","upgrades":["websocket"],"pingInterval":8000,"pingTimeout":10000}

之后每次请求都需要带上这个sid,建立websocket请求的连接也不例外。所以说,sid是polling,以及polling升级到websocket的关键。这之后的请求类似于:

https://***/?EIO=3&transport=polling&t=1540820717314-1&sid=EoGaL3fRQlpTOaLp5eSTorwss://***/?EIO=3&transport=websocket&t=1540820717314-1&sid=EoGaL3fRQlpTOaLp5eST

那么问题来了,如果请求是带上的sid不是服务端生成的会怎样呢?服务端会不认识,给你返回一个400,并告诉你

invalid sid

我们遇到的便是这个问题,nginx默认的负载均衡策略是轮询,所以请求有可能会打到不是生成这个sid的机器上去,这时候我们就会收到一个400,如果运气好,可能也会打到原来的机器上,运气更好一点,甚至能坚持到websocket连接建立。

解决

这里提出两种方案

  1. nginx的负载均衡采用ip_hash,这样能保证一个客户端的请求都走到一台服务器上

  2. 不使用polling模式,只使用websocket

这两种方案各有利弊。第二种显而易见,不支持websocket的古老浏览器和客户端将没法工作。第一种的问题隐藏得比较深,试想,如果你增减了机器会怎样,这时候ip_hash策略的模将变化,之前的连接将全部失效,而对于微服务,扩缩容是很频繁的操作(特别是产品处于发展期),这种有损的扩缩容很大概率是不能接受的。

综上,建议直接使用websocket,毕竟不支持websocket的老版本占比很少,而且相对于先polling,耗时也会减少。

以上是"nginx代理socket.io服务有哪些坑"这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注行业资讯频道!

服务 代理 问题 内容 客户 机器 模式 篇文章 升级 生成 均衡 之间 代码 关键 客户端 对象 就是 方案 有时候 服务器 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 亿人帮互联网科技有限公司 山东特亿宝互联网科技有限公司 中关村互联网 科技集团 苏州找大状互联网科技有限公司 互联网最新的科技有限公司 重庆互联网络科技 凡科互联网科技 狮子座互联网科技有限公司 天津摩尔互联网科技 上游互联网科技 重庆科技学院互联网 宁波青枫互联网科技有限公司 金融科技与互联网金融相同和不同 来此购互联网科技有限公司 世界互联网科技公司市值排名 昭通互联网科技选哪家 注册互联网科技公司经营范围大全 平安好医生打造互联网科技医疗 知域互联网科技有限公司官网 如何强化互联网金融科技 互联网新科技 互联网科技巨头监管 以房互联网科技 奇士达互联网科技 互联网科技logo设计 滨湖区互联网智能科技产品供应 互联网科技中介 杭州壁岐互联网科技有限公司 注册互联网科技公司经营范围大全 恒生科技互联网指数十大成分股
0