nginx 代理websocket 因为cookie过大连接失败

一些网站有即时聊天功能,经常一边开后台一边前端登陆退出多个账号!经常出现websocket链接不上!

原因:由于前端cookie都时经过加密。所以导致长度大小会很大。此时nginx代理。如果是跨域代理的话不会携带cookie,但是如果是同源代理的话会携带cookie。nginx默认请求头大小为1k ,此时因为cookie导致大小溢出,导致连接websocket 时会fail。

解决方案:

1、忽略cookie信息(因为连接websocket是不需要cookie的直接在反向代理那个网站的配置文件去屏蔽掉)
由于cookie信息后端时不用的。所以选择了这个加到网站的NG配置文件里面。

proxy_set_header Cookie "la=1"; 
proxy_no_cache $cookie_nocache $arg_nocache$arg_comment;


2、修改nginx请求头默认大小,这里是修改NGINX总配置文件

#client_header_buffer_size 8k; 
#large_client_header_buffers 4 32k;

综上所述,建议第一种方法!修改网站的配置文件是非常的保险!即时出错删除就可以了!如果修改总的配置文件会让其他需要cookie的网站功能异常!


分享到:
关键词:Nginx

网友留言(0 条)

发表评论

验证码