Home > Article > Backend Development > Nginx+PHP上传大文件设置
nginx的修改
send_timeout 60; fastcgi_connect_timeout 300; fastcgi_send_timeout 300; fastcgi_read_timeout 300; client_max_body_size 30m; 可以全局设置也可以每个网站单独设置
php的修改
upload_max_filesize 10M post_max_size 15M 该项应该要大于 upload_max_filesize max_input_time 300 max_execution_time 300
php-fpm注意参数
request_terminate_timeout 300 request_slowlog_timeout 如果多数为上传大文件则设置较大值,这个根据自身情况设置
这两个参数如果设置过小的话会导致文件传输了一部分后连接关闭。
最大时间根据用户带宽计算,不建议设置为 0 无限制,避免意外宕机。
==========================================================
由于看到网上很多配置帖子中说要把 nginx.conf 中的 keepalive_timeout 时间设置加大才行
我的服务器上设置为:
keepalive_timeout 60; 默认 大概 75s 我设置的是 60,
所以
经过实际测试,本地限速 34KB/s 上传 9MB 文件,用时270秒左右,上传成功,
表明实际上传不受 keepalive_timeout 时间影响,和该项配置无关
而且这个时间加长会严重影响 nginx 的并发
至于 send_timeout 我在网上查询了半天也没搞清楚到底是怎么个超时,同样也测试过,
将 send_timeout 设置为 60 后,
上传超过 170s 仍然上传成功,所以我理解的是该超时时间应该为 客户端上传时网络断流后超过 60s 则停止接收接收操作,中断连接。只要持续发送数据则不会断掉,可能是这样的吧