invalid request block size: 4542 (max 4096)...skip引发的Nginx 502 Bad Geteway

今天有用户报告了一个issue:html

当他访问咱们的网站时出现了如下错误:chrome

可是我访问一样的地址却没有这个问题,连续访问屡次,查看uWSGI日志发现出现如下ERROR:浏览器

 

 

原来是请求头的大小超出了uWSGI的buffer大小,默认时4K,咱们没有作过修改,既然不够大,那就给大点呗,cookie

修改uwsgi.ini :增长:并发

  buffer-size = 32768网站

重启uWSGI之后,用户问题获得解决.url

 

可是问题来了,为何个人访问没有出现这个问题呢?或者上为何用户会遇到这个问题,接下来开始查找缘由:.net

咱们的服务域名是二级域名: xxx.abc.com (域名涉及保密,这里作了修改),公司还有一个网站是顶级域名:abc.com3d

用户是先在顶级域名登陆后作了操做,有访问咱们二级网站,就出现了如下情景:调试

在请求咱们的二级域名网站时使用了两组cookie,第一组是顶级域名的cookie信息,第二组才是咱们须要的本网站cookie信息:

在顶级域名中,cookie信息长度很长,个数还比较多,致使两组cookie信息总大小超过了uWSGI的默认设置

为了方便理解,这里用baidu作解释:咱们先请求www.baidu.com,能够访问到百度首页:而后在url栏点击以下红色标记(我用的是chrome浏览器):

能够看到这样的结果:

 

 这里的baidi.com和www.baidu.com都指顶级域名,而后咱们访问百度贴吧:https://tieba.baidu.com/index.html

一样点击🔒图标选择cookie后看到以下结果:

 

 和咱们遇到的状况是同样的,这是由于二级域名会共享顶级域名的cookie,在请求中一并发送,能够经过F12调试看到,咱们刷新贴吧首页的请求附带的cookie信息:

其中一部分是顶级域名baidu.com的cookie:

另外一部分是tieba.baidu.com的cookie信息:

这里涉及到的更多知识点能够参考如下文章:

  https://blog.csdn.net/qq_32239417/article/details/62228624

相关文章
相关标签/搜索