413请求实体太大报错(413 Request Entity Too Large)这个报错不太多见,但并不代表它不存在。错误的本质非常清晰,即客户端所请求的实体,比如上传的文件超出限制所致。
既然知道这个错误的问题所在,那么我们需要做哪些应对措施以修复此报错就非常简单了。
这篇文章将详细说明该错误的本质及提出错误修复的解决方案:
什么是413 Request Entity Too Large
?
413 Request Entity Too Large
当从客户端作出的请求是过大,由Web服务器进行处理会出现误差。如果您的Web服务器设置了特定的HTTP请求大小限制,客户端可能会遇到413 Request Entity Too Large
响应。可能导致此错误的示例请求是,如果客户端尝试将大文件上传到服务器(例如,大媒体文件)。
它取决于您使用的Web服务器的类型,这将决定您需要配置哪个指令。无论您是要限制用户将过大的文件上传到您的Web服务器,还是要增加上传大小限制,以下部分将说明如何操作。
修复413 Request Entity Too Large
错误
根据您使用的Web服务器,实施下面描述的必要更改以配置您的Web服务器的最大HTTP请求大小限额。通过这样做,您可以设置允许客户端上传的阈值文件大小,如果超过该限制,他们将收到一个413 Request Entity Too Large
状态。
nginx
对于Nginx用户,决定允许的HTTP请求大小的指令是client_max_body_size
. 该指令可能已经在您的nginx.conf文件(/etc/nginx/nginx.conf
)中定义。但是,如果不是,您可以在http, server或者location块中添加该指令并定义一个值。
server { client_max_body_size 100M; ... }
该指令的默认值为1M
(1 兆字节)。如果您不希望有请求大小限制,您可以将该值设置为0
。
设置所需的值后,保存更改并通过运行以下命令重新加载Nginx:
service nginx reload
Apache
对于Apache Web服务器,有一个名为LimitRequestBody的类似指令。该指令提供的功能与client_max_body_size
您能够限制HTTP请求的大小相同。LimitRequestBody
指令可以在您的http.conf
文件或.htaccess
文件中定义。Apache中此指令的默认值是0
,但是,您可以将此值设置为您喜欢的任何值(该值以字节表示)。
例如,如果您想限制大于100 MB的请求,您可以使用以下内容。
LimitRequestBody 104857600
完成更改后,保存配置文件并使用以下命令重新加载 Apache:
service apache2 reload
附加配置 – PHP用户
除了修改Web服务器上的相应指令外,PHP用户还需要进行一些其他更改。首先,您需要打开php.ini文件,该文件很可能位于类似于/etc/php5/fpm/php.ini
(取决于您的PHP版本)的目录中。接下来,您需要找到并修改以下指令:
- upload_max_filesize定义上传文件的最大允许大小(默认为 2 MB)。
- post_max_size定义了PHP将接受的
POST
最大数据大小。此设置还会影响文件上传(默认为8MB)。
一旦上述指令被修改,以反映所需的容许HTTP请求大小,简单地保存配置并重新加载PHP-FPM通过运行下面的命令:
service php-fpm restart