Não é possível fazer upload de um arquivo grande para o servidor por trás do nginx como um proxy reverso

1

Eu uso o nginx como um proxy reverso. Por trás disso vem o apache hosing foo.com. Para fazer upload de um arquivo grande, defino post_max_size = 20M e upload_max_filesize = 20M no php.ini. Mas não consigo fazer upload de arquivos com tamanho maior que 2MB. Minha configuração 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;
   }
}

Além disso, configurei o nginx.conf da seguinte forma:

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;
...
}

Alguma idéia de como resolver o problema?

    
por Mohsen Saberi 06.04.2015 / 12:55

2 respostas

1

No nginx.conf, defina o tamanho máximo do corpo.

client_max_body_size 20M;

Vá também para /etc/php5/fpm/php.ini

; Tamanho máximo de dados POST que o PHP aceitará.

post_max_size = 100M

; Tamanho máximo permitido para arquivos enviados.

upload_max_filesize = 100M

    
por 06.04.2015 / 15:46
0

Adicione esses parâmetros à seção http do seu 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;
    
por 11.09.2016 / 15:27