Nginx支持WebSocket配置
2021-03-07 15:26
标签:server soc read http time 问题 ping nginx代理 程序 记录一下Nginx代理WebSocket的配置 在http模块添加协议升级配置 该配置用于将http协议升级为websocket协议 map说明:根据客户端请求中$http_upgrade的值,设定$connection_upgrade的值。 前端或其他应用可以通过 Nginx默认超时时间为60s。 当Nginx代理websocket,客户端与服务端建立连接后,若60s内无交互,则nginx会断开此连接。 为了解决这个问题,我们可以配置超时时间。 这样10分钟无交互才会断开。 但依旧不妥,如果应用程序就是11分钟才来消息呢。我们可以让客户端定时发送一个心跳。以前端为例: ps: 后台接收到 Nginx支持WebSocket配置 标签:server soc read http time 问题 ping nginx代理 程序 原文地址:https://www.cnblogs.com/tenny-peng/p/12886605.html1 添加协议升级
http {
... // 省略其它
map $http_upgrade $connection_upgrade {
default upgrade;
‘‘ close;
}
}
{}
内容是设定规则。即$connection_upgrade的值默认是upgrade;如果$http_upgrade为空字符串,则$connection_upgrade的值是close。2 添加虚拟主机配置
server {
listen 8000;
server_name 127.0.0.1;
... // 省略其它
location /ws/ {
proxy_pass http://wsserver/;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $connection_upgrade;
proxy_set_header Host $host;
}
}
upstream wsserver {
server 127.0.0.1:10101;
server 127.0.0.1:10102;
}
ws://127.0.0.1:8000/ws/wsServer
访问该服务3 超时中断问题
location /ws/ {
... // 省略其他
proxy_connect_timeout 4s;
proxy_read_timeout 600s; # 10分钟无消息交互关闭连接
proxy_send_timeout 12s;
}
// 每5分钟发送一次心跳
function keepSocket() {
window.setInterval(function(){
socket.send(‘ping‘);
}, 300000);
}
ping
后可以回复一个pong
上一篇:DAY 19 PYTHON入门
文章标题:Nginx支持WebSocket配置
文章链接:http://soscw.com/index.php/essay/61383.html