Come appare il messaggio
2026/10/29 09:14:02 [error] 1234#1234: *5678 rewrite or internal redirection cycle while internally redirecting to "/index.html", client: 203.0.113.5, server: example.com, request: "GET /app/ HTTP/2.0"Cause frequenti
try_files $uri $uri/ /index.html;ma/index.htmlnon esiste nelroot(build mancante, percorso errato).- Il
rooto unaliasè stato cambiato e non punta più al sito distribuito. - Il file
indexindicato nella configurazione non c'è. - Una regola
locationorewriterimanda la richiesta su se stessa. - Una single-page app è stata distribuita senza il suo
index.html.
Verifica
- Le regole effettive per questo sito
nginx -T 2>/dev/null | grep -nE 'server_name|root |alias |try_files|index ' - Il file di ripiego esiste?
ls -l /var/www/app/index.html - Le righe di log esatte
tail -n 20 /var/log/nginx/error.log - La configurazione è valida?
nginx -t
Soluzione
- Imposta
rootsulla cartella che contiene davveroindex.html. - Assicurati che la build sia stata distribuita e che
index.htmlci sia e sia leggibile da nginx. - Per una single-page app usa
try_files $uri /index.html;e nulla che ripieghi su un percorso che a sua volta ripiega. - Con un
aliascontrolla le barre finali e chetry_filesusi un percorso al suo interno. - Ricarica:
nginx -t && systemctl reload nginx.
Domande frequenti
Perché 500 e non 404?
nginx si ferma dopo 10 reindirizzamenti interni e segnala un errore del server, perché il ciclo è un problema di configurazione, non una pagina mancante.
Lo stesso messaggio può venire da una regola rewrite?
Sì. Un rewrite senza last, break o una condizione di uscita chiara può andare in ciclo. Controlla ogni rewrite nella location corrispondente.