nginx默认等待连接的超时时间为60s,我们可以通过修改下面参数来延长连接时间proxy_connect_timeout;
下面是具体配置中
http {
server {
location /club/websocket {
root html;
index index.html index.htm;
proxy_pass http://club/websocket;
proxy_http_version 1.1; #webSocket的默认连接配置
proxy_set_header Upgrade $http_upgrade; #webSocket的默认连接配置
proxy_set_header Connection "Upgrade"; #webSocket的默认连接配置
proxy_connect_timeout 75s; #配置点1,与后端服务器建立连接的超时时间。一般不大于75秒;
proxy_read_timeout 600s; #配置点2,如果没效,可以考虑这个时间配置长一点
proxy_send_timeout 60s; #配置点3
# 反向代理透传客户端ip
proxy_set_header X-Real-IP $remote_addr; #远端真实地址
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; #反向代理之后转发之前的ip地址
proxy_set_header Host $http_host; # http请求的主机域名
proxy_set_header X-NginX-Proxy true; #nginx代理
}
}
}配置解析:
proxy_http_version 1.1;:WebSocket 必须通过 HTTP/1.1 协议建立连接。如果你没有这条配置,Nginx 会默认使用 HTTP/1.0 协议,这会导致 WebSocket 连接失败。proxy_set_header Upgrade $http_upgrade;:WebSocket 在连接时会发送一个Upgrade请求头,表示希望从 HTTP 协议升级到 WebSocket 协议。Nginx 必须转发这个头部。proxy_set_header Connection 'upgrade';:这表示要保持连接并升级为 WebSocket 协议。如果没有这个配置,Nginx 可能就会中断连接,导致连接无法建立。