Nginx+PHP+IIS出现413 Request Entity Too Large问题的解决方法

当遇到413 Request Entity Too Large错误,可按照以下步骤解决:1) 修改Nginx配置,增加client_max_body_size;2) 更新PHP的php.ini文件,调整max_execution_time, max_input_time, memory_limit, post_max_size, upload_max_filesize;3) 调整IIS的applicationHost.config和IIS_schema.xml,增大requestLimits maxAllowedContentLength;4) 若使用Apache,修改httpd.conf的LimitRequestBody。确保重启相应服务使改动生效。" 124217222,5804617,Verilog奇偶校验实现,"['Verilog', '数字IC', '硬件描述语言', '校招', '逻辑设计']

今天遇到413这个坑,翻了半天的网页,终于解决。

要解决上传大文件,遭遇 413 Request Entity Too Large 错误这个问题,因为我服务器配置是Nginx+PHP+IIS7.5,所以需要分别修改 Nginx、Php、IIS的相关配置。

以下按上传500M的文件的需求来进行修改。

1.修改Nginx配置文件

这点估计但凡做了一点搜索尝试的同学都知道了,具体来说

打开 nginx\conf\nginx.conf 这个文件

添加一行  client_max_body_size ,将其数值加大

需注意,若你有加 client_header_buffer_size 这个设置,那么

client_max_body_size 须 > client_header_buffer_size 的值

http {
    include       mime.types;
    default_type  application/octet-stream;
    server_names_hash_bucket_size 64; 

    #log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
    #                  '$status $body_bytes_sent "$http_referer" '
    #                  '"$http_user_agent" "$http_x_forwarded_for"';

    #access_log  logs/access.log  main;

    client_header_buffer_size 248m;

    # 将Nginx代理的所有请求实体的大小限制为512m
    client_max_body_size 512m;

修改好后,重启Nginx,使其生效。 nginx -s reload 其实是可以的


2. 修改PHP的配置文件

若你使用PHP,需要修改Php.ini文件

找到:max_execution_time  ,脚本运行的最长时间,单位秒,将其加大:
max_execution_time = 360


找到:max_input_time ,脚本可以消耗的时间,单位也是秒,将其加大:
max_input_time = 360


找到:memory_limit ,脚本运行最大消耗的内存,根据你的需求更改数值,将其加大:
memory_limit = 512M


找到:post_max_size ,表单提交最大数据为 8M,此项不是限制上传单个文件的大小,而是针对整个表单的提交数据进行限制的。限制范围包括表单提交的所有内容,将其加大:
post_max_size = 512M


找到:upload_max_filesize,上载文件的最大许可大小 ,将其加大:
upload_max_filesize = 512M

修改好后,重启IIS 的程序池或 Apache,使其生效。


3. 修改IIS的配置文件

若你使用IIS服务器,那么你需要修改两处。

1、windows目录下,\System32\inetsrv\config\applicationHost.config 文件

搜索 requestFiltering 这个段,添加一行

<requestLimits maxAllowedContentLength="536870912" /> 此处值设为512*1024*1024=536870912,即512M

<requestFiltering>
        <fileExtensions allowUnlisted="true" applyToWebDAV="true" />
        <verbs allowUnlisted="true" applyToWebDAV="true" />
		<requestLimits maxAllowedContentLength="536870912" />
        <hiddenSegments applyToWebDAV="true">
             <add segment="web.config" />
        </hiddenSegments>
</requestFiltering>

2、windows目录下,\System32\inetsrv\config\schema\IIS_schema.xml 文件

搜索 maxAllowedContentLength 这个段,默认是30M

同理,将这个值调整为 536870912 ,即 512M

<attribute name="maxAllowedContentLength" type="uint" defaultValue="536870912" />

修改IIS_schema.xml 文件,稍为麻烦一点,因为系统有保护,不能直接修改

按下图所示操作

然后一路点“确定”,退出,这个文件就可以保存修改了。

修改好后,重启IIS,使其生效


4. 修改Apache的配置文件

若你是用Apache环境,需要修改位于Apahce目录下的httpd.conf 文件
添加下面内容
LimitRequestBody 536870912 ,改好后重新启动apache

以上实操通过!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值