请求块大小无效

我在皇帝模式下运行 uwsgi

uwsgi --emperor /path/to/vassals/ --buffer-size=32768

得到这个错误

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

怎么办? 我也试了 -b 32768

96160 次浏览

我试图在 nginx 下运行它时遇到了同样的问题 文件 给你。需要注意的是,一旦切换到 nginx,必须确保不是在 --socket参数指定的端口上访问应用程序,而是在 nginx.conf 中的“ listen”端口上访问。虽然你的问题被描述的不同,标题完全符合我的问题。

我也遇到了同样的问题,而遵循一些教程。 问题是我设置了选项 socket = 0.0.0.0:8000而不是 http = 0.0.0.0:8000socket选项用于某些第三方路由器(例如 nginx) ,而当设置 http选项时,uwsgi 可以接受传入的 HTTP 请求并自行路由它们。

我可以修复它添加 --protocol=http到 uwsgi。

正确的解决方案是不切换到 HTTP 协议。您只需要增加 uWSGI 设置中的缓冲区大小。

buffer-size=32768

或处于命令行模式:

-b 32768

引自官方文件:

默认情况下,uWSGI 为每个请求的头部分配一个非常小的缓冲区(4096字节)。如果您开始在日志中接收“无效请求块大小”,这可能意味着您需要更大的缓冲区。使用缓冲区大小选项将其增加(最多增加到65535)。

如果您在日志中收到‘21573’作为请求块大小,这可能意味着您正在使用 HTTP 协议与使用 uwsgi 协议的实例进行通信。别这样。

从这里: https://uwsgi-docs.readthedocs.io/en/latest/ThingsToKnow.html

当 uWSGI 服务器使用 uwsgi协议并试图通过 curl或 Web 浏览器直接通过 http协议访问它时,将显示此错误。如果可以,请尝试将 uWSGI 服务器配置为使用 http协议,这样您就可以通过 Web 浏览器或 curl 访问它。

如果您不能(或不想)更改它,可以在本地或远程 uWSGI 服务器前使用反向代理(例如 nginx) ,请参阅 https://uwsgi-docs.readthedocs.org/en/latest/Nginx.html

如果感觉工作量太大,可以试试 uwsgi-tools python 软件包:

$ pip install uwsgi-tools


$ uwsgi_curl 10.0.0.1:3030

如果你需要通过网页浏览器等访问你的应用程序,还有一个简单的反向代理服务器 uwsgi_proxy。见更多扩展答案 https://stackoverflow.com/a/32893520/179581

正如文件中的另一条评论所指出的:

如果您在日志中收到‘21573’作为请求块大小,这可能意味着您正在使用 HTTP 协议与使用 uwsgi 协议的实例进行通信。别这样。

如果您正在使用 Nginx,那么如果您有这样的配置(或者类似的奇怪配置) ,就会发生这种情况:

proxy_pass http://unix:/path/to/socket.sock

这是对 uWSGI 使用 HTTP (这使得它变得暴躁)。相反,使用:

uwsgi_pass unix:/path/to/socket.sock;

我也有同样的问题 所以我做了..。 使用 UWSGI + DJANGO + NGINX + REACT +

1-nano/etc/uwsgi/site/app _ plataform. ini [ uwsgi ]

DJANGO _ SETTING _ MODULE = app _ plataform.setingenv = DJANGO _ SETTING _ MODULE setings.configure ()

Chdir =/home/app _ plataform home =/root/app _ plataform Module = prometheus _ plataform. wsgi: application

Master = true process = 33 buffer-size = 32768

Socket =/home/app _ plataform/app _ plataform. sock Chmod-socket = 777真空 = 真

2-对 nginx 进行严肃的性能升级... 用户 www-data;

Worker _ processauto; worker _ process4; pid/run/nginx.pid; include/etc/nginx/module-abled/* . conf;

事件{ worker _ links 4092; multi _ access on; }

更新配置

Client _ body _ buffer _ size 16K; Client _ max _ body _ size 32m;

Client _ body _ timeout 12; client _ header _ timeout 12; keepalive _ timeout Send _ timeout 10; access _ log off;

基本设定

Sendfile on; tcp _ nopush on; tcp _ no ; # keepalive _ timeout 65; Type _ hash _ max _ size 2048;

Server _ name _ hash _ bucket _ size 64; # server _ name _ in _ redirect off;

Include/etc/nginx/ime.type; default _ type 应用程序/八位码流;

SSL 设置

Ssl _ protocol TLSv1 TLSv1.1 TLSv1.2; # 删除 SSLv3,参考文献: POODLE 上的 ssl _ better _ server _ crypher;

日志设置

Access _ log/var/log/nginx/access.log; error _ log /var/log/nginx/error.log;

# Gzip 设置 #

Gzip _ comp _ level 2; gzip _ min _ length 1000; gzip _ proxied
过期的 no-cache no-store 私有授权; gzip _ types text/print Application/x-javascript text/xml text/css application/xml; 上;

# gzip _ proxied any; # gzip _ comp _ level 6; gzip _ buffer 168k; Gzip _ http _ version 1.1; # gzip _ types text/plaintext/css Application/json application/javascript text/xml application/xml Application/xml + rss text/javascript;

虚拟主机配置

Include/etc/nginx/conc.d/< em > . conf; include /etc/nginx/sites- 启用/ ; }

然后... 重新启动服务或 reebot 服务器..。

Systemctl 重新启动 uwsgi & systemctl 重新启动 nginx

可以在 uWSGI 设置中增加缓冲区大小。

最快的解决方案是,从浏览器中删除该 URL 的 Cookie。

在浏览器中打开开发人员工具 > 转到应用程序选项卡和 > 删除与 URL 关联的 Cookie。