413 请求实体过大

49

我使用nginX/1.6和Laravel,当我向服务器发送数据时,会出现错误413请求实体过大。我尝试了许多解决方案如下:

1- set client_max_body_size 100m; in server and location and http in nginx.conf.
2- set upload_max_filesize = 100m in php.ini
3- set post_max_size = 100m in php.ini

重启了 php5-fpm 和 nginx,问题仍未解决。


请注意不要在包含的配置文件中覆盖 client_max_body_size 值,即在您的 nginx.conf 中包含其他 .conf 文件时。 - Matt Burrow
我检查了所有的.conf文件,并确保了。 - AhmedShawky
我通过从位置中删除client_max_body_size解决了这个问题。 - AhmedShawky
3个回答

101
在 /etc/nginx/nginx.conf 的 http 段内添加 'client_max_body_size xxM',其中 xx 是您要允许的大小(以兆字节为单位)。
http {
      client_max_body_size 20M;         
}

你能给我完整的目录吗?我找不到它。 - niz_sh
3
我认为你需要重新启动nginx。 sudo service nginx restart - Ayman Elshehawy
nginx文档:http://nginx.org/en/docs/http/ngx_http_core_module.html#client_max_body_size - Hafez Divandari

15

我遇到了同样的问题,但是在docker中出现。当我面临这个问题时,将client_max_body_size 120M;添加到我的Nginx服务器配置中。

Nginx的默认配置文件路径为/etc/nginx/conf.d/default.conf

server {
    client_max_body_size 120M;
    ...

它将最大主体大小调整为120兆字节。请注意您放置 client_max_body_size 的位置,因为它会影响其范围。例如,如果您将 client_max_body_size 放在位置范围内,则只有位置范围会受到影响。

之后,我将这三行添加到我的PHP Docker文件中。

RUN echo "max_file_uploads=100" >> /usr/local/etc/php/conf.d/docker-php-ext-max_file_uploads.ini
RUN echo "post_max_size=120M" >> /usr/local/etc/php/conf.d/docker-php-ext-post_max_size.ini
RUN echo "upload_max_filesize=120M" >> /usr/local/etc/php/conf.d/docker-php-ext-upload_max_filesize.ini

由于docker PHP镜像自动将路径下的所有设置文件(/usr/local/etc/php/conf.d/)包含在php.ini文件中,因此这三行代码将更改PHP配置文件,问题必须消失。


2
我正在使用 Docker 和 PHP 7.4,我也遇到了这个问题。
只需在 docker/php74/ 目录下的 *.conf 文件中添加一行即可。
server {
    client_max_body_size 100M;
    ...
}

如果你仔细阅读AhmedShawky的问题,似乎他已经尝试过了。 - framontb

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接