【Nginx】Nginx代理WebSocket
本文介绍了如何使用Nginx代理WebSocket连接。WebSocket是一种支持全双工通信的网络协议。通过Nginx配置可实现:1)将带ws-api前缀的WebSocket请求转发至目标服务器;2)在转发过程中去除前缀。关键配置包括:强制HTTP 1.1协议、设置Upgrade和Connection请求头、延长连接超时时间以及传递客户端真实IP。需要注意的是,原始请求必须使用Nginx服务器所
·
1.websocket
WebSocket 是一种网络通信协议,它提供了在单个 TCP 连接上进行全双工(双向)通信的能力
假设需求:
把 ws://192.168.0.1:8088/ws-api/websocket/pushData代理到ws://192.168.0.156:8888/websocket/pushData;同时,在转发时去除ws-api前缀.
2.使用Nginx代理WebSocket
# WebSocket 代理配置
location ^~ /ws-api/ {
proxy_pass http://192.168.1.156:8888/; # 写真实的服务器地址
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "Upgrade";
proxy_set_header Host $host;
proxy_read_timeout 86400;
proxy_set_header X-Real-IP $remote_addr; # 传递客户端真实IP
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
- WebSocket 关键配置
proxy_http_version 1.1:强制使用HTTP 1.1协议与后端通信。WebSocket协议依赖HTTP 1.1的Upgrade机制完成握手。Nginx默认使用HTTP 1.0与后端通信,无法支持协议升级。proxy_set_header Upgrade $http_upgrade:将客户端的Upgrade请求头透传给后端服务器。$http_upgrade变量捕获客户端请求中的Upgrade头(通常为websocket)。后端服务器需通过Upgrade:websocket头识别WebSocket握手请求。proxy_set_header Connection "upgrade":修改Connection请求头为upgrade,指示后端启用协议升级。与Upgrade头配合,告知后端需要将连接从HTTP升级为WebSocket。
- 其他配置:
proxy_read_timeout 86400设置长时间连接不超时;X-Real-IP和X-Forwarded-For头用于传递客户端真实IP,方便后端服务获取客户端信息。
!!!注意:ws://192.168.0.1:8088/ws-api/websocket/pushData 前面的 ws://192.168.0.1:8088 不用去掉,并且这个ip地址必须是当前nginx 服务器所在的ip地址才行。
火山引擎开发者社区是火山引擎打造的AI技术生态平台,聚焦Agent与大模型开发,提供豆包系列模型(图像/视频/视觉)、智能分析与会话工具,并配套评测集、动手实验室及行业案例库。社区通过技术沙龙、挑战赛等活动促进开发者成长,新用户可领50万Tokens权益,助力构建智能应用。
更多推荐
所有评论(0)