nginx二进制安装后配置websocket代理的核心是版本≥1.3.13且正确设置proxy_http_version 1.1、proxy_set_header upgrade $http_upgrade、proxy_set_header connection "upgrade"和proxy_pass四项必需参数,并建议添加proxy_read_timeout 86400等增强稳定性配置。

确认 Nginx 版本与基础可用性
二进制安装通常解压即用,但必须验证是否满足最低要求:
- 运行
nginx -v,确认输出版本 ≥ 1.3.13(推荐使用 1.20+ 或 1.24+ 稳定版) - 执行
nginx -t检查配置语法是否合法,避免因路径、权限或模块缺失导致失败 - 若提示
command not found,需将二进制所在目录加入$PATH,或使用绝对路径调用(如/opt/nginx/sbin/nginx)
WebSocket 代理必需的配置项
在 server 块内,针对 WebSocket 路径(如 /ws、/socket.io)单独定义 location,以下四行缺一不可:
-
proxy_http_version 1.1;—— 强制使用 HTTP/1.1,WebSocket 握手依赖其长连接能力 -
proxy_set_header Upgrade $http_upgrade;—— 将客户端原始的Upgrade: websocket头透传给后端 -
proxy_set_header Connection "upgrade";—— 显式告知 Nginx 此请求需升级协议,而非普通 HTTP 代理 -
proxy_pass http://your-backend-address;—— 后端地址写http://(不是ws://),Nginx 内部自动处理协议隧道
增强稳定性的实用补充配置
生产环境建议追加这些项,避免连接意外中断:
-
proxy_read_timeout 86400;—— 默认 60 秒,WebSocket 空闲时极易被断开,设为 24 小时较稳妥 -
proxy_set_header Host $host;—— 保证后端收到正确的域名信息 -
proxy_set_header X-Real-IP $remote_addr;和X-Forwarded-For—— 便于后端识别真实客户端 IP - 若用 HTTPS 前端(WSS),
server块需配置 SSL,并确保listen 443 ssl与证书路径正确
验证与调试要点
配置保存后,别忘了重载而非重启(尤其二进制部署常无 systemd 集成):
- 执行
/path/to/nginx -s reload(路径以你的实际二进制位置为准) - 检查错误日志:
tail -f /path/to/nginx/logs/error.log,重点关注upstream prematurely closed connection或client intended to send too large chunked body类报错 - 用浏览器开发者工具 Network 标签页观察 WebSocket 连接状态码是否为
101 Switching Protocols - 后端服务必须监听 HTTP/1.1 并正确响应 Upgrade 请求,Nginx 不负责实现 WebSocket 协议,只做隧道中转











