指引网

当前位置: 主页 > 服务器 > Nginx >

uwsgi部署到nginx出现invalid request block size: 4161 (ma

来源:网络 作者:佚名 点击: 时间:2017-06-13 21:35
[摘要]  下面我们来看一篇关于uwsgi部署到nginx出现invalid request block size: 4161 (max 4096)的解决,希望此文章可以帮助到各位朋友。

 

使用Flask制作一个网页平台之后,登陆使用openid登陆,然后使用uwsgi服务部署到nginx上,运行起来没有什么问题,但是偶尔在登陆的时候出现502的错误,一般登陆成功之后后面的任何操作都不会出错。

查看uwsgi的log之后,发现出现这样的一个错误:

invalid request block size: 4161 (max 4096)...skip

问题原因:默认的uwsgi分配一个小的buffer(4k)来接收每个请求的头信息,如果在日志中看见"invalid request block size",它意味着你需要一个大一点的buffer


搜索一下,其实问题很简单:url地址长度超过了4096个字符,而4096就是uwsgi配置中buffer-size的默认值,所以只需要将buffer-size改大一点即可。

我是使用uwsgi -x 指定uwsgi配置文件来启动服务器的,所以只需要修改成以下方式启动即可:

uwsgi -x platform.uwsgi.xml --buffer-size 32768

修改办法,可以给uwsgi启动命令家参数:

在CODE上查看代码片派生到我的代码片

uwsgi -b 8192   

或者修改uwsgi启动配置文件,比如uwsgi.ini添加以下配置:

在CODE上查看代码片派生到我的代码片
buffer-size  = 8192 


问题基本就解决了,至于为什么这个问题是偶尔出现?那是因为openid登陆的时候会携带一个参数叫next_url,这个地址是用来指定登陆成功之后返回到哪里地址,如果这个next_url太长就会导致url地址超过4096,有时候next_url=/,即网站根地址,url地址长度就不会超过4096。另外还和openid返回的登陆人信息长度有关系,导致有些人从来不会出现这个错误,有些人偶尔出现这个问题。

------分隔线----------------------------