L'errore"request header or cookie too large
" in Nginx si verifica quando la dimensione delle intestazioni delle richieste o dei cookie supera la dimensione massima consentita, impostata nella configurazione del server. In questo articolo analizzeremo in dettaglio perché ciò accade.
L'errore si verifica quando la dimensione delle intestazioni delle richieste HTTP/HTTPS supera il limite consentito. Ad esempio, il browser sta inviando troppi cookie o la richiesta inviata al server web è troppo grande.
La richiesta è solitamente divisa in due parti: le intestazioni, dove si trovano le informazioni generali e i meta-dati, e il corpo della richiesta. Il corpo della richiesta, così come l'intestazione, può essere di dimensioni diverse, sia piccole che grandi, e le sue dimensioni di solito non causano alcun problema. Tuttavia, se nelle impostazioni del server web è presente un parametro che limita la lunghezza dell'intestazione della richiesta, è probabile che si verifichi questo errore.
Ci sono diversi modi per risolvere il problema
nginx.conf
.POST
invece di GET
. Se il problema si verifica quando si invia una richiesta GET
con parametri di grandi dimensioni, si può provare a utilizzare una richiesta POST
invece di GET
.Per risolvere questo errore (se si è un amministratore del server web Nginx) è necessario aumentare la dimensione massima delle intestazioni modificando il parametro large_client_header_buffers
. Se siete un utente comune del sito web in cui si è verificato l'errore, dovreste aspettare che l'amministratore della risorsa corregga l'errore.
È necessario regolare il parametro large_client_header_buffers
, che contiene due numeri, ad esempio 4 e 8 (che sono impostati per default). Il primo numero è il valore che imposta il numero massimo di buffer e il secondo numero è la dimensione del buffer in cui viene letta l'intestazione della richiesta. Il secondo parametro è impostato in kilobyte.
Questa riga viene aggiunta alla sezione http del file di configurazione di Nginx o alla sezione server di un particolare sito. I file di configurazione dei siti web di Nginx sono solitamente memorizzati in /etc/nginx/conf.d/
o /etc/nginx/sites-available/
(a seconda di come è stato installato Nginx, utilizzando i repository standard del sistema operativo o il repository di Nginx).
Per regolare il valore si possono impostare i numeri 8 e 64, adatti a memorizzare intestazioni di grandi dimensioni. Il parametro avrà il seguente aspetto:
large_client_header_buffers 8 64k;
Una volta apportate le modifiche al file di configurazione, è necessario riavviare Nginx utilizzando il comando:
sudo systemctl reload nginx
Questi sono i metodi per risolvere il problema.