Nginx

413 Request Entity Too Large

Las subidas fallan a partir de cierto tamaño. El valor por defecto de client_max_body_size es 1 MB, así que aparece en cuanto alguien adjunta una imagen de móvil.

El límite puede estar en tres capas y hay que subirlo en todas: Nginx, el intérprete y la propia aplicación. Cambiar solo una hace que el error se mueva de sitio en vez de desaparecer.

Qué comprobar, y en qué orden

En el orden en que lo miramos nosotros. No es un ranking de frecuencia: no publicamos estadísticas que no hemos medido.

  1. 1

    client_max_body_size de Nginx, que es el primero que corta.

    Comprobar

    grep -r client_max_body_size /etc/nginx/

    Corregir

    # En el bloque server o location:
    #   client_max_body_size 64m;
    sudo nginx -t && sudo systemctl reload nginx
  2. 2

    Los límites de PHP, si es lo que hay detrás. Son dos y upload_max_filesize no puede superar a post_max_size.

    Comprobar

    # El php.ini de la línea de comandos NO es el de PHP-FPM, que es quien
    # atiende la petición. Hay que preguntarle al que corresponde:
    php-fpm8.2 -i | grep -E 'Loaded Configuration|upload_max_filesize|post_max_size'

    Corregir

    # En php.ini:
    #   upload_max_filesize = 64M
    #   post_max_size = 68M
    sudo systemctl restart php8.2-fpm
  3. 3

    La directiva está en un bloque que no aplica a esa ruta. Puesta dentro de un location distinto no afecta a la petición que falla.

    Comprobar

    sudo nginx -T | grep -B15 client_max_body_size

    Corregir

    # Subirla al bloque server para que la hereden todos los location.

Los comandos de esta página se ejecutan en tu servidor y algunos modifican la configuración: léelos antes de pegarlos. Las rutas y los nombres de servicio varían entre distribuciones. Así se elabora este catálogo.