关于Nginx+websocket 400问题
2016-10-29 本文已影响0人
cowkeys
说明
用beego + nginx 在ubuntu上搭建了一个聊天服务器,使用websocket进行聊天交互, 测试没问题,但是放到nginx上之后,访问网站 发现不能进行websocket操作,提示400的问题
解决方法
在nginx配置文件 加上这几句话
map $http_upgrade $connection_upgrade {
default upgrade;
'' close;
}
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $connection_upgrade;
map $http_upgrade $connection_upgrade {
default upgrade;
'' close;
}
server {
...
location /chat/ {
proxy_pass http://backend;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $connection_upgrade;
}
原因
since the “Upgrade” is a hop-by-hop header, it is not passed from a client to proxied server. 链接地址。
另附 常用的HTTP请求头与响应头
注意:
设置完后 默认有一个连接超时时间60s,相当于我的聊天程序 如果某个人在60s秒内 没有说话 websocket 连接 就会自动断开!
因此 在nginx上需要配置[proxy_read_timeout]
proxy_read_timeout 360s; //6分钟时间
最后reload nginx