Назад | Перейти на главную страницу

Невозможно загрузить большой файл на сервер за nginx в качестве обратного прокси

Я использую nginx как обратный прокси. За ним идет apache hosing foo.com. Чтобы загрузить большой файл, я установил post_max_size = 20M и upload_max_filesize = 20M в php.ini. Но я не могу загрузить файл размером больше 2 МБ. Моя конфигурация 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;
...
}

Есть идеи, как решить проблему?

В nginx.conf установите максимальный размер тела.

client_max_body_size 20M;

Также GoTo /etc/php5/fpm/php.ini

; Максимальный размер данных POST, которые принимает PHP.

post_max_size = 100 млн

; Максимально допустимый размер загружаемых файлов.

upload_max_filesize = 100 МБ

Добавьте эти параметры в 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;