So sieht die Meldung aus
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"Häufige Ursachen
try_files $uri $uri/ /index.html;, aber/index.htmlexistiert imrootnicht (Build fehlt, falscher Pfad).rootoder einaliaswurde geändert und zeigt nicht mehr auf die ausgelieferte Seite.- Die in der Konfiguration genannte
index-Datei ist nicht da. - Eine
location- oderrewrite-Regel schickt die Anfrage wieder auf sich selbst zurück. - Eine Single-Page-App wurde ohne ihre
index.htmlausgeliefert.
Prüfen
- Die wirksamen Regeln für diese Seite
nginx -T 2>/dev/null | grep -nE 'server_name|root |alias |try_files|index ' - Existiert die Rückfall-Datei?
ls -l /var/www/app/index.html - Die genauen Logzeilen
tail -n 20 /var/log/nginx/error.log - Ist die Konfiguration gültig?
nginx -t
Lösung
rootauf das Verzeichnis setzen, das wirklich dieindex.htmlenthält.- Sicherstellen, dass der Build ausgeliefert wurde und
index.htmlvorhanden und für nginx lesbar ist. - Für eine Single-Page-App
try_files $uri /index.html;nutzen und nichts, das auf einen Pfad zurückfällt, der wieder zurückfällt. - Bei einem
aliasdie Schrägstriche am Ende prüfen und dasstry_fileseinen Pfad darin nutzt. - Neu laden:
nginx -t && systemctl reload nginx.
Häufige Fragen
Warum 500 und nicht 404?
nginx bricht nach 10 internen Umleitungen ab und meldet einen Serverfehler, weil die Schleife ein Konfigurationsproblem ist, keine fehlende Seite.
Kann dieselbe Meldung von einer Rewrite-Regel kommen?
Ja. Ein rewrite ohne last, break oder eindeutige Abbruchbedingung kann ebenfalls schleifen. Jedes rewrite in der passenden Location prüfen.