Nginx错误:客户端打算发送太大的正文

kmbjn2e3  于 2023-10-17  发布在  Nginx
关注(0)|答案(4)|浏览(146)

我经常会收到一个错误:

This site can't be reached.
The webpage at https://example.com/document might be temporarily down or it my have moved permanently to are new web address.

我的网站存储在AWS上。我使用rails + nginx + passenger。
Nginx错误日志:

client intended to send too large body: 3729822 bytes, 
client: 172.42.35.54, server: example.com, 
request: "POST /document HTTP/1.1", host: "test.example.com", 
referrer: "https://test.example.com/document/new"

应用程序日志:
ActionController::RoutingError (No route matches [GET] "/document")
一段时间后,错误消失了。我怀疑这是由于部署,但我不确定。你能告诉我,它与什么有关,以及如何解决这样的问题吗?

mwkjh3gx

mwkjh3gx1#

nginx.conf的路径是/etc/nginx/nginx.conf
在我的例子中,我只是在http block中添加了client_max_body_size,它对我很有效

http {
    ...
    client_max_body_size 20M;
}

更改此配置后,请确保restart nginx

kpbwa7wx

kpbwa7wx2#

默认Nginx配置限制客户端请求体为1Mb。
您必须增加client_max_body_size以允许用户发布大型文档。
不要错过这个derictive的 context(http,server,location),不要忘记重新加载配置或重新启动Nginx。

dgsult0t

dgsult0t3#

我更新了/etc/nginx/nginx.conf
在我的例子中,我在sendfile on;之后的http block中添加了client_max_body_size,如下所示

http {
    ...
    sendfile on;
    client_max_body_size 20M;
}

client_max_body_size放在sendfile on;之后非常重要,
更新nginx.conf后不要忘记按如下方式重新启动nginx
为ubuntu

sudo service nginx restart

对Centos

sudo systemctl restart nginx
muk1a3rh

muk1a3rh4#

nginx.confserver子句中添加以下3个命令

sendfile on;
    client_max_body_size 20M;
    client_body_buffer_size 20M;

相关问题