在nginx下配置Websocket的proxy_pass还是很方便的。几乎和默认的proxy_pass一致,只要加两行代码:
XML/HTML代码
- proxy_set_header Upgrade $http_upgrade;
- proxy_set_header Connection $connection_upgrade;
如果对http_upgrade和$connection_upgrade的变量有自定义,可以这样写:
XML/HTML代码
- map $http_upgrade $connection_upgrade {
- default upgrade;
- '' close;
- }
如果不熟悉map的用法,这里有一篇中文的说明:https://blog.51cto.com/tchuairen/2175525,
至此,一个websocket 就配置好了,但偶尔你可能还是会发现ws会断开,所以最好设置一下超时时间。比如5分钟?
XML/HTML代码
- proxy_read_timeout 300s;
- proxy_send_timeout 300s;
毕竟网络不好的时候。。30s或者60s是真有可能会数据发出去收不到的。干脆延长一点吧。
参考:
1、https://www.xncoding.com/2018/03/12/fullstack/nginx-websocket.html
2、https://blog.51cto.com/tchuairen/2175525