L’errore “Request-URI Too Long” di Apache si verifica quando un client invia un URL che supera il limite di lunghezza predefinito dal server. Questo problema può impedire agli utenti di accedere a pagine specifiche e si verifica in genere nelle applicazioni che inviano grandi quantità di dati nell’URL.

Se siete alla ricerca di una soluzione di hosting ad alte prestazioni con configurazioni server ottimizzate, Ava Hosting offre server VPS e dedicati con supporto Apache completo per prevenire e risolvere efficacemente tali errori.

Cause dell’errore Request-URI Too Long

  1. Parametri di richiesta eccessivi: Troppi parametri nell’URL possono superare il limite consentito.
  2. URL lunghi nelle applicazioni Web: Alcune applicazioni costruiscono dinamicamente URL lunghi, causando questo problema.
  3. Impostazioni del server non configurate correttamente: La configurazione predefinita di Apache può limitare gli URL lunghi.
  4. Limitazioni del server proxy o del bilanciatore di carico: I server intermedi possono imporre i propri limiti alla lunghezza degli URI.
  5. Restrizioni di sicurezza: Alcuni moduli di sicurezza, come mod_security, possono bloccare gli URI lunghi.

Come risolvere l’errore Request-URI Too Long (richiesta di URL troppo lunga)

1. Aumentare il limite di lunghezza dell’URI di Apache

Modificare la direttiva LimitRequestLine nel file di configurazione di Apache per aumentare la lunghezza della richiesta consentita.

  1. Aprire il file di configurazione di Apache (httpd.conf o apache2.conf):
    sudo nano /etc/apache2/apache2.conf # Debian/Ubuntu
    sudo nano /etc/httpd/conf/httpd.conf # CentOS/RHEL
  2. Aggiungere o modificare la seguente riga:
    LimitRequestLine 8190

    Il valore predefinito è 8190 byte (8 KB). Se necessario, è possibile aumentarlo a 16384 (16 KB) o superiore.

  3. Riavviare Apache per applicare le modifiche:
    sudo systemctl restart apache2 # Debian/Ubuntu
    sudo systemctl restart httpd # CentOS/RHEL

2. Aumentare il limite dei campi di intestazione

La direttiva LimitRequestFieldSize controlla la dimensione massima di un campo di intestazione della richiesta HTTP. Se si hanno URL lunghi con intestazioni, aumentare questo valore può essere utile.

  1. Aprire il file di configurazione di Apache:
    sudo nano /etc/apache2/apache2.conf # Debian/Ubuntu
    sudo nano /etc/httpd/conf/httpd.conf # CentOS/RHEL
  2. Aggiungere o modificare la seguente riga:
    LimitRequestFieldSize 16384
  3. Riavviare Apache:
    sudo systemctl restart apache2 # Debian/Ubuntu
    sudo systemctl restart httpd # CentOS/RHEL

3. Controllare e modificare il codice dell’applicazione web

  • Se l’applicazione trasmette troppi dati tramite richieste GET, si consiglia di passare a richieste POST, che non hanno limiti di lunghezza.
  • Ottimizzate le strutture degli URL per ridurre al minimo i parametri non necessari.
  • Utilizzate i cookie o le sessioni per memorizzare grandi quantità di dati invece di passarli nell’URL.

4. Configurare i server proxy o i bilanciatori di carico

Se il server si trova dietro un proxy o un bilanciatore di carico, aggiornare le impostazioni per consentire URI più lunghi.

Per Nginx:

proxy_buffer_size 16k;
proxy_buffer 4 32k;
proxy_busy_buffers_size 64k;
large_client_header_buffers 4 16k;

Per HAProxy:

option http-buffer-request
max-header-size 32768

Dopo aver apportato le modifiche, riavviare il rispettivo servizio:

sudo systemctl restart nginx # Per Nginx
sudo systemctl restart haproxy # Per HAProxy

5. Disabilitare o modificare le regole di mod_security

Se mod_security è abilitato, potrebbe bloccare gli URI di richiesta lunghi. Per verificare se è la causa del problema, disabilitarlo temporaneamente:

sudo a2dismod security2  # Debian/Ubuntu
sudo systemctl restart apache2  # Restart Apache

Se la disabilitazione di mod_security risolve il problema, si può pensare di personalizzare le sue regole invece di disattivarlo in modo permanente.

Conclusione

L’errore “Request-URI Too Long” di Apache può essere risolto aumentando i limiti di richiesta, ottimizzando gli URL delle applicazioni, regolando le impostazioni del proxy o modificando le configurazioni di sicurezza. Seguendo questi passaggi, è possibile garantire che il server Web gestisca in modo efficiente le richieste senza interrompere la funzionalità.