Erro Nginx 413

2

Originalmente postei isso no Stack Overflow, depois lembrei que o SO não é para perguntas baseadas em servidor.

Olá pessoal,

Quando tento enviar um arquivo para o meu site, estou obtendo o erro "413 Request Entity Too Large" do Nginx, mas no meu arquivo nginx.conf já afirmei explicitamente que o tamanho máximo é de cerca de 250MB no momento, e mudei o tamanho máximo do arquivo no php.ini também (e sim, eu reiniciei os processos). O log de erros me dá isso:

2010/12/06 04:15:06 [error] 20124#0: *11975 client intended to send too large body: 1144149 bytes, client: 60.228.229.238, server: www.x.com, request: "POST /upload HTTP/1.1", host: "x.com", referrer: "http://x.com/"

Até onde eu sei, 1144149 bytes não são 250MB ... Há algo que estou perdendo aqui?

Aqui está a configuração básica do Nginx:

user  nginx;
worker_processes  8;
worker_rlimit_nofile 100000;

error_log   /var/log/nginx/error.log;
#error_log  /var/log/nginx/error.log  notice;
#error_log  /var/log/nginx/error.log  info;

pid        /var/run/nginx.pid;


events {
    worker_connections  1024;
    use epoll;
}


http {
    include       /etc/nginx/mime.types;
    default_type  application/octet-stream;

    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

    access_log  /var/log/nginx/access.log  main;

    sendfile        on;
    client_max_body_size 300M;
    tcp_nopush      on;
    tcp_nodelay     on;
    server_tokens   off;
    gzip            on;
    gzip_static     on;
    gzip_comp_level 5;
    gzip_min_length 1024;
    keepalive_timeout  300;
    limit_zone   myzone  $binary_remote_addr  10m;

    # Load config files from the /etc/nginx/conf.d directory
    include /etc/nginx/sites/*;
}

E o vhost para o site:

server {
 listen  80;
 server_name www.x.com x.com;

 access_log /var/log/nginx/x.com-access.log;

 location / {
  index index.html index.htm index.php;
  root /var/www/x.com;

  if (!-e $request_filename) {
   rewrite ^/([a-z,0-9]+)$ /$1.php last;
   rewrite ^/file/(.*)$ /file.php?file=$1;
  }

  location ~ /engine/.*\.php$ {
   return 404;
  }

  location ~ ^/([a-z,0-9]+)\.php$ {
   fastcgi_pass 127.0.0.1:9000;
   fastcgi_index index.php;
   fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
   include  fastcgi_params;
  }
 }
}

Estou faltando alguma coisa aqui?

    
por Elliot 06.12.2010 / 12:32

3 respostas

1

Tente mover client_max_body_size para dentro do bloco do servidor.

    
por 06.12.2010 / 13:07
1

Se você estiver enfrentando esse problema, em que client_max_body_size não parece estar sendo respeitado, verifique se todos os servidores pelos quais o tráfego da Web passa têm essa configuração definida corretamente. No meu caso, configurei os servidores de aplicativos, mas esqueci de configurar o balanceador de carga com a configuração.

    
por 10.04.2018 / 21:12
0

Você pode estar configurando client_max_body_size em vários locais ou arquivos. Por exemplo, a última linha da sua configuração inclui quaisquer arquivos de configuração do diretório sites : include /etc/nginx/sites/*

Encontre todas as ocorrências de client_max_body_size executando este comando em seu diretório nginx:

sudo grep -R 'client_max_body_size' ./*

Se você remover ou atualizar todas essas ocorrências, você deve estar em boa forma. Eu tive o mesmo problema e fiquei pensando o que poderia ser.

JP

    
por 07.12.2012 / 18:44