配置
location /ws {
proxy_pass http://upstream_backend;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "Upgrade";
# Nginx 转发 WebSocket 时需要设置为持久连接
proxy_set_header Proxy-Connection "Keep-Alive";
proxy_read_timeout 86400s; # 这里设置为一个很大的超时时间
}
- upstream_backend: WebSocket 后端服务器的地址。
- proxy_http_version:将 HTTP 版本设置为1.1,以确保升级头是受支持的
- proxy_set_header Upgrade $http_upgrade;:将升级头设置为与客户端请求匹配的值
- proxy_set_header Connection "Upgrade"; :将 Connection 头设置为 Upgrade,以反映要进行的协议更改
- proxy_read_timeout: 默认60s,未设置的话,可能会导致连接断开,可以设置长一点,或者采用心跳机制(前端可以设置一个定时发送,这样时间可以设置小一点)
注意:
Upgrade、Connection:逐跳标头(只能传输一次,不能透传),后端ws程序根据这两个头携带的信息来判断是否使用ws协议来通信。
https对应wss://xxxx
http对应ws://xxx
本文暂时没有评论,来添加一个吧(●'◡'●)