El error"request header or cookie too large
" en Nginx se produce cuando el tamaño de las cabeceras de las peticiones o de las cookies excede el tamaño máximo permitido, establecido en la configuración del servidor. En este artículo analizaremos en detalle por qué ocurre esto.
El error se produce cuando el tamaño de las cabeceras de petición HTTP/HTTPS excede el límite permitido. Por ejemplo, el navegador está enviando demasiadas cookies o la petición enviada al servidor web es demasiado grande.
La petición suele dividirse en dos partes: las cabeceras -donde se encuentra la información general y los metadatos- y el cuerpo de la petición. El cuerpo de la petición, al igual que la cabecera, puede ser de diferentes tamaños - tanto pequeño como grande y su tamaño no suele causar ningún problema. Sin embargo, si la configuración del servidor web tiene un parámetro para limitar la longitud de la cabecera de la petición, es probable que obtenga este error.
Hay varias formas de solucionar el problema
nginx.conf
.POST
en lugar de GET
. Si el problema se produce al enviar una solicitud GET
con parámetros grandes, puede probar a utilizar una solicitud POST
en lugar de GET
.Para solucionar este error (si es administrador del servidor web Nginx) debe aumentar el tamaño máximo de las cabeceras cambiando el parámetro large_client_header_buffers
. Si usted es un usuario normal del sitio web donde se ha producido este error, debe esperar hasta que el administrador del recurso corrija el error.
Es necesario ajustar el parámetro large_client_header_buffers
, que toma 2 números, por ejemplo 4 y 8 (que están establecidos por defecto). El primer número es el valor que establece el número máximo de buffers, y el segundo número es el tamaño del buffer en el que se lee la cabecera de la petición. El segundo parámetro se establece en kilobytes.
Esta línea se añade a la sección http del archivo de configuración de Nginx o a la sección del servidor para un sitio en particular. Los archivos de configuración de sitios web de Nginx suelen almacenarse en /etc/nginx/conf.d/
o /etc/nginx/sites-available/
(dependiendo de cómo se instaló Nginx: usando los repositorios estándar del sistema operativo o usando el repositorio de Nginx).
Para ajustar el valor puedes poner los números 8 y 64 adecuados para almacenar cabeceras grandes. El parámetro tendrá este aspecto:
large_client_header_buffers 8 64k;
Una vez realizados los cambios en el archivo de configuración, Nginx debe reiniciarse utilizando el comando:
sudo systemctl reload nginx
Estos son los métodos para solucionar este problema.