我使用 nginx 作为反向代理。它后面是 apache 托管 foo.com 。为了上传大文件,我在 php.ini 中设置了post_max_size = 20M
。upload_max_filesize = 20M
但我无法上传大于 2MB 的文件。我的 nginx 配置是:
server {
listen 80;
server_name .foo.com;
if ($http_host != "www.foo.com") {
rewrite ^ http://www.foo.com$request_uri permanent;
}
access_log /var/log/nginx/foo.access.log;
error_log /var/log/nginx/foo.error.log;
index index.php index.html;
location / {
proxy_pass http://192.168.1.2:80/;
include /etc/nginx/proxy_params;
proxy_buffering off;
chunked_transfer_encoding on;
}
}
另外我配置了 nginx.conf 如下:
http {
...
sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 600;
client_max_body_size 200M;
types_hash_max_size 2048;
# server_tokens off;
include fastcgi_params;
fastcgi_read_timeout 600;
proxy_connect_timeout 600;
proxy_send_timeout 600;
proxy_read_timeout 600;
send_timeout 600;
...
}
关于如何解决这个问题有什么想法吗?
答案1
在 nginx.conf 中设置最大主体大小。
客户端最大主体大小20M;
另外转到 /etc/php5/fpm/php.ini
;PHP 可以接受的 POST 数据的最大大小。
post_max_size = 100M
;允许上传文件的最大大小。
上传最大文件大小 = 100M
答案2
将此参数添加到http
nginx.conf 部分:
proxy_connect_timeout 300;
proxy_send_timeout 300;
proxy_read_timeout 300;
proxy_buffer_size 512k;
proxy_buffers 32 4m;
proxy_busy_buffers_size 25m;
proxy_temp_file_write_size 10m;