413 请求实体太大 - 文件上载问题


413 Request Entity Too Large - File Upload Issue

>我正在尝试在我的服务器上上传 30MB 的文件,但它不起作用。

  1. 当我上传 30MB 文件时,页面加载">找不到页面">

  2. 当我上传一个 3MB 的文件时,我收到带有 nginx/0.6.32 的">413 请求实体太大">

我正在尝试找到nginx,以便我可以增加">client_max_body_size",但我无法找到安装在服务器上的nginx。我什至尝试跑步:

vi /etc/nginx/nginx.conf

vi /usr/local/nginx/conf/nginx.conf

检查配置文件是否存在,但我在我的服务器上找不到它。

有没有办法解决这个问题?还是我必须在我的服务器上安装 nginx。

编辑:

我已经在我的 php.ini 文件中进行了所有必要的更改,

post_max_size 128M
upload_max_filesize 100M
memory_limit 256M

谢谢Raju

来源:cybercity

编辑 nginx 的 conf 文件:

nano /etc/nginx/nginx.conf

httpserverlocation部分中添加一行:

client_max_body_size 100M;

不要使用MB它不起作用,只有 M!

另外不要忘记重新启动nginx:

systemctl restart nginx
-in php.ini

(在/etc/php.ini 内部(

 max_input_time = 24000
 max_execution_time = 24000
 upload_max_filesize = 12000M
 post_max_size = 24000M
 memory_limit = 12000M

-in nginx.conf(inside/opt/nginx/conf(

client_max_body_size 24000M

它为我的情况工作

首先编辑 Nginx 配置文件 ( nginx.conf (

位置: sudo nano /etc/nginx/nginx.conf

添加以下代码:

http {
        client_max_body_size 100M;
}

然后在PHP配置文件中添加以下行(php.ini(

位置: sudo gedit /etc/php5/fpm/php.ini

添加以下代码:

memory_limit = 128M 
post_max_size = 20M  
upload_max_filesize = 10M
sudo nano /etc/nginx/nginx.conf

然后在 http 部分添加一行

http {
    client_max_body_size 100M;
}

不要只使用 MB M。

systemctl restart nginx

然后对于 PHP 位置

sudo gedit /etc/php5/fpm/php.ini

目前最多使用 PHP 7.0 或更高版本

sudo nano /etc/php/7.2/fpm/php.ini     //7.3,7.2 or 7.1 which php you use

检查那些根据您的意愿增加的.

memory_limit = 128M 
post_max_size = 20M  
upload_max_filesize = 10M

重新启动 php-fpm

service php-fpm restart 

我将更改直接添加到我的虚拟主机而不是nginx的全局配置中,如下所示:

   server {
     client_max_body_size 100M;
     ...
   }

然后我更改了 php.ini 中的参数,如上面的评论:

   max_input_time = 24000
   max_execution_time = 24000
   upload_max_filesize = 12000M
   post_max_size = 24000M
   memory_limit = 12000M

而你忘不了的是重启 nginx 和 php-fpm,在 CentOS 7 中是这样的:

  systemctl restart nginx
  systemctl restart php-fpm

请输入域名nginx文件:

nano /etc/nginx/sites-available/domain.set

添加到文件此代码

client_max_body_size 24000M;

如果收到错误,请使用此命令

nginx -t

我遇到了同样的错误,并按照以下步骤修复了它。

  1. 首先,编辑 nginx.conf 文件。

    vi /etc/nginx/nginx.conf

在 HTTP 部分,添加了以下行。

http {
    client_max_body_size 100M;
}
  1. 最后使用以下命令重新启动 Nginx。

systemctl restart nginx

假设您在 php.ini 文件中进行了必要的更改:

您可以通过在以下路径中找到的 nginx.conf 文件中添加以下行来解决此问题:

/etc/nginx/nginx.conf

然后使用 VIM 文本编辑器编辑文件,如下所示:

vi /etc/nginx/nginx.conf

并添加具有足够大值的client_max_body_size,例如:

client_max_body_size 20MB;

之后,请确保使用:xi:wq进行保存

然后重新启动你的nginx。

就是这样。

为我工作,希望这有帮助。

我上传了上述更改。但是当我进行更改时,我开始在文件上传中获得 404 响应,这导致我进行进一步调试,并通过检查 nginx 错误发现这是一个权限问题.log

溶液:

在/var/lib/nginx 上检查当前用户和组的所有权。

$ ls -ld /var/lib/nginx

drwx------. 3 nginx nginx 17 Oct 5 19:31/var/lib/nginx

这表明一个名为nginx的用户和组可能不存在,拥有此文件夹。这会阻止文件上传。

就我而言,"/etc/nginx/nginx.conf"中提到的用户名是

user vagrant; 

在这种情况下,将文件夹所有权更改为nginx.conf中定义的用户。

$ sudo chown -Rf vagrant:vagrant /var/lib/nginx

验证它是否确实已更改。

$ ls -ld /var/lib/nginx
drwx------. 3 vagrant vagrant 17 Oct  5 19:31 /var/lib/nginx

重新加载nginx和php-fpm以获得更安全的sade。

$ sudo service nginx reload
$ sudo service php-fpm reload

权限被拒绝错误现在应该消失了。检查错误.log(基于 nginx.conf error_log位置(。

$ sudo nano /path/to/nginx/error.log

任何寻找 Apache2(对我来说是 Ubuntu 18(解决方案的人都可以编辑:

/etc/apache2/apache2.conf

并查找/编辑该行:

LimitRequestBody 7000000 #7mb

只需打开此文件并---

sudo vim  /etc/nginx/nginx.conf

http服务器位置部分添加一行:

client_max_body_size 100M;

然后通过以下命令检查nginx是否正常

sudo nginx -t

如果一切看起来都很好,那么你会得到

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

然后重新启动nginx

sudo systemctl restart nginx

我希望你的目的得到满足:)

就我而言,我使用 nginx 和 letsencrypt 在我的 Spring 启动应用程序前面放置一个 ssl 层。

将clint_max_body_size属性放在"/etc/nginx/nginx.conf"中对我不起作用。相反,我将此属性放在特定于站点的 conf 文件中。

sudo nano/etc/nginx/sites-available/mywebsite.com

server {
    ...
    client_max_body_size 3M;
    ...
}

保存上述内容后,重新启动nginx服务器,它工作了!

须藤服务 nginx 停止

须藤服务 nginx 启动

打开文件/etc/nginx/nginx.conf添加或更改client_max_body_size 0;

使用:

php -i

命令或添加:

phpinfo();

以获取配置文件的位置。

根据您的需要和服务器更新这些变量

max_input_time = 24000
max_execution_time = 24000
upload_max_filesize = 12000M
post_max_size = 24000M
memory_limit = 12000M

在Linux上,您需要重新启动nginx/apache和phpfpm服务,以便加载新的ini设置。在 xampp 上,ammps 您可以从此类应用程序附带的控制面板重新启动这些。

首先需要注意响应状态码:

  • 如果它说"413内容太大",则由php本身返回(php.ini文件(
  • 如果它显示"413 请求实体太大",则由 nginx 返回(如果您使用一个(。
  • 如果它显示"403 Forbidden"(如果您安装了Modsecurity(,那么它很可能是由Modsecurity返回的。

  • 如果它是由 php 返回的,那么你需要更改:
  • "post_max_size"(适用于请求内发送的所有文件(
  • "upload_max_filesize"(单独适用于单个文件(

  • 在任一"/etc/php/
  • 8.2/fpm/php.ini">
  • 或者"/etc/php/
  • 8.2/cli/php.ini"(Nginx服务器通常使用fpm(。

  • 如果它是由nginx返回的,那么你需要在网站的.conf文件中添加"client_max_body_size 22M;"指令。
    如果它是由 Modsecurity 返回的,那么你需要将/etc/nginx/modsec/modsecurity.conf 文件中的 "SecRequestBodyLimit" 指令更改为类似 "SecRequestBodyLimit 23068672" (它以字节为单位(