[服务器技术]
如何解决nginx上传大文件的限制?
[复制链接]
|
通过设置nginx的client_max_body_size解决nginx+php上传大文件的问题:
) k. c! A# C, `, D2 S3 W6 X * ~1 W1 _" {, c6 Z
用nginx来做webserver的时,上传大文件时需要特别注意client_max_body_size这个参数,否则会中断在nginx的请求中,在php中是无法记录到访问的.: B$ t0 o) I0 N9 W) B9 Z; I
7 X R% V# l0 P- {5 s$ {! p
一般上传大文件流程:
& R# u, Z- I1 ?* y& l- } 8 Q* X5 R& h' V( s9 |$ Y0 g7 u
首先修改php.ini文件:4 ?: S" Z+ s; M$ z& c
, B% K9 L+ X/ S
file_uploads on 是否允许通过HTTP上传文件的开关。默认为ON即是开8 F8 i# [, c" {; M: C$ C* g
; j$ D! J9 p u. ?0 z upload_tmp_dir – 文件上传至服务器上存储临时文件的地方,如果没指定就会用系统默认的临时文件夹
# E! d6 J+ r( a# D* R: A, v
9 X/ `) M$ M; c upload_max_filesize 8m 望文生意,即允许上传文件大小的最大值。默认为2M' [) x* H% i2 p- I7 o4 j, @ q
5 |( T7 Y1 z6 S7 s post_max_size 8m 指通过表单POST给PHP的所能接收的最大值,包括表单里的所有值。默认为8M
6 R* Z4 b! v; d7 ] / S0 f2 f* {9 |( e
一般来说,设置好上述四个参数后,在网络正常的情况下,上传<=8M的文件是不成问题的
+ b/ s! _; l! g7 k7 F& e9 c7 z, s 4 e7 r$ W4 Z- N7 n5 J+ J: K* p0 G
但如果要上传>8M的大文件的话,只设置上述四项还不一定能行的通。除非你的网络真有100M/S的上传高速,否则你还得继续设置下面的参数。/ C. V! [* `. j5 a
* d m) a! ]2 b* Z( `; x+ L& m max_execution_time 600 每个PHP页面运行的最大时间值(秒),默认30秒/ W% d- d2 ]/ }$ F( G& A
$ a) D- U( V8 a& N G- ?/ X; y
max_input_time 600 每个PHP页面接收数据所需的最大时间,默认60秒# c" U3 P. z6 r7 H
" D6 `8 q: k& g! t% D
memory_limit 8m 每个PHP页面所吃掉的最大内存,默认8M
0 G. {0 }9 p1 f2 l2 W 0 C2 T H! E0 }
webserver用的是nginx,在nginx的conf中添加了一个参数:8 A" b3 l1 c5 I9 ^9 r a
! S" P' W9 r: [. w* K 默认是1M,需要增大的话。1 v7 g& U2 Q8 r9 ~/ n0 w" d9 x2 \
( U% p; m! f' y6 e0 [; `- q1 x" q 在nginx.conf中增加一句
* y8 d1 Q$ h% Z" \3 q, s + U# Z9 ?, d+ |3 q, |1 g& |3 ^/ c
client_max_body_size 30m;9 Q5 c( m) O9 m6 m1 d& ?5 r
/ x' S6 P. q( w7 { 重启即可* m2 {$ K; t0 Q U* w
s+ z( i- ~( Q
30m表示最大上传30M,需要多大设置多大。
' B" ^1 m6 w: l$ X$ \ |
|