2010-12-06 14 views
12

Cuando intento subir un archivo a mi sitio, aparece el error "413 Entity Request Too Large" de Nginx, sin embargo, en mi archivo nginx.conf ya he indicado explícitamente el tamaño máximo que se debe mostrar aproximadamente 250 MB en este momento, y también cambió el tamaño máximo de archivo en php.ini (y sí, reinicié los procesos). El registro de errores me da esto:Nginx Error 413

2010/12/06 04:15:06 [error] 20124 # 0: * 11975 cliente destinado para enviar demasiado grande cuerpo: 1144149 bytes, cliente: 60.228.229.238 , servidor: www.x.com, solicitud: "POST /subir HTTP/1.1", anfitrión: "x.com", referenciales: "http://x.com/"

Como Hasta donde yo sé, 1144149 bytes no son 250MB ... ¿Hay algo que me falta aquí?

Aquí está la base de Nginx config:

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/*; 
} 

Y el host virtual para el sitio:

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; 
     } 
    } 
} 
+0

Probablemente deberías citar la configuración de configuración de nginx que has cambiado –

+0

Muy bien, agregó. – EJay

Respuesta

11

Al no conocer la versión de su construcción nginx y los módulos que se construyó con marcas este duras, pero trata de lo siguiente:

  1. Copie su client_max_body_size 300 M; línea en la ubicación/{} parte de su configuración vhost. No estoy seguro de si está anulando el valor predeterminado (que es 1 MB) correctamente.

  2. ¿Está utilizando nginx_upload_module? Si es así, asegúrese de tener el upload_max_file_size 300MB; línea en tu configuración también.

-1

También agrego que podría definirlo en el gestor de ubicación * .php

location ~ ^/([a-z,0-9]+)\.php$ { 

Siendo el "inferior" uno en el nivel en cascada, sería una manera fácil de ver si el problema viene de su configuración nginx o módulos.

Seguro que no viene de PHP porque el error 413 "cuerpo demasiado grande" es realmente un error NGinx.

+0

¿No estoy seguro de por qué he votado negativamente sobre esta respuesta? ¿Le importaria explicar? – nembleton

1

Mi disposición era:

php.ini

... 
upload_max_filesize = 8M 
... 

nginx.conf

... 
client_max_body_size 8m; 
... 

El nginx mostró el error 413 cuando fue subido.

Entonces tuvo una idea: No te dejaré nginx muestran el error 413, client_max_body_size establecido en un valor mayor que upload_max_filesize, por lo tanto:

php.ini

... 
upload_max_filesize = 8M 
... 

nginx.conf

... 
client_max_body_size 80m; 
... 

¿Qué pasó?

Cuando carga menos de 80MB nginx no mostrará el error 413, pero PHP mostrará el error si el archivo es de hasta 8MB.

Esto resolvió mi problema, pero si alguien carga un archivo de más de 80 MB, ocurre el error 413, regla nginx.

+0

He añadido client_max_body_size 64m; en la parte http {} de la conf, se reinició y ¡funcionó! ¡Gracias! – flunder

+0

esto lo resolvió por mí. Pensé que el analizador corporal en mi servidor de nodo era el problema, pero me olvidé completamente de configurar esta línea en nginx – SMT

Cuestiones relacionadas