nginx反向代理webSocket配置
最近有一个需求,就是需要使用 nginx 反向代理 websocket,经过查找一番资料,目前已经测试通过,本文只做一个记录。
看官方文档说 Nginx 在 1.3.13 以后的版本才支持 websocket 反向代理,所以要想使用支持 websocket 的功能,必须升级到 1.3.13 以后的版本。
配置起来也特别简单。配置参考:
server {
listen 80;
server_name test.test.cn;
location / {
proxy_pass http://test2.test.cn:8080;
proxy_read_timeout 3600s;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
}
简单解释一下:
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
这三句是必须的。用来告诉代理服务器客户端将协议切换到WebSocket的意图。
proxy_read_timeout 3600s;
默认情况下,如果代理服务器在60秒内未传输任何数据,则将关闭连接。通过调整proxy_read_timeout
使其大于心跳间隔。防止nginx主动关闭连接导致连接失败。