无法将大文件上传到 nginx 后面的服务器作为反向代理

无法将大文件上传到 nginx 后面的服务器作为反向代理

我使用 nginx 作为反向代理。它后面是 apache 托管 foo.com 。为了上传大文件,我在 php.ini 中设置了post_max_size = 20Mupload_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

将此参数添加到httpnginx.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;

相关内容