nginx: client intended to send too large body

最近上传大于1M文件的时候,报错nginx。

413 Request Entity Too Large

经过排查修改nginx配置

这是最简单的一个做法,着报错原因是nginx不允许上传配置过大的文件,那么件把nginx的上传大小配置调高就好。

1、打开nginx主配置文件nginx.conf, 找到http{}段并修改以下内容:

client_max_body_size 15m;
client_body_buffer_size 15m;

2、 把nginx.conf 加上超时时间 (在http{}里配置即可)
nginx使用proxy模块时,默认的读取超时时间是60s。

配置nginx上传文件大小限制

client_max_body_size 15m;
client_body_buffer_size 15m;
 # 超时时间
proxy_connect_timeout       300s; //后端服务器连接的超时时间_发起握手等候响应超时时间
proxy_send_timeout          300s;  //后端服务器数据回传时间_就是在规定时间之内后端服务器必须传完所有的数据
proxy_read_timeout          300s; //也可以说是后端服务器处理请求的时间
send_timeout                300s; //传输响应给客户端的超时时间
fastcgi_connect_timeout 300; //指定nginx与后端fastcgi server连接超时时间
fastcgi_send_timeout 300;
fastcgi_read_timeout 300;

扩展:
语法:keepalive_timeout timeout [header_timeout];
默认值:keepalive_timeout 75s;
上下文:http、服务器、位置

第一个参数设置超时,在此期间,保持活动的客户端连接将在服务器端保持打开状态。零值禁用保持活动的客户端连接。

可选的第二个参数在“Keep-Alive: timeout=time”响应头字段中设置一个值。两个参数可能不同。

“Keep-Alive: timeout=time”头字段被 Mozilla 和 Konqueror 识别。MSIE 会在大约 60 秒内自行关闭保持活动连接。

语法:send_timeout 时间;
默认值:send_timeout 60s;
上下文:http、服务器、位置

设置传输响应给客户端的超时时间。超时仅设置在两次连续的写操作之间,而不是用于整个响应的传输。如果客户端在这段时间内没有收到任何消息,则连接关闭。

所以在使用时keepalive_timeout,浏览器不必进行多次连接,而是使用已经建立的连接。这控制了保持活动/打开的时间。

我建议,如果您将send_timeoutWeb 服务器设置为小,它将快速关闭连接,这将为连接主机提供更多可用的整体连接。

这些参数很可能只与高流量网络服务器相关,两者都支持相同的目标:更少的连接和更高效的请求处理,或者将所有请求放入一个连接(保持活动)或快速关闭连接以处理更多请求(发送超时) )。

3. 以上全部配置,发现并未生效
原因是我们使用了k8s容器管理,nginx镜像配置不知被哪位同事修改了,根本没有将外部nginx.conf配置文件挂载到镜像中。
在这里插入图片描述
后将其挂载到镜像中重启nginx即可解决。

猜你喜欢

转载自blog.csdn.net/qq_38747892/article/details/131330015
今日推荐