Nginx-Umschreib- oder interner Umleitungszyklus


13

Ich stoße mit dem Kopf gegen eine Tabelle und versuche herauszufinden, was den Umleitungszyklus in meiner Nginx-Konfiguration verursacht, wenn ich versuche, auf eine URL zuzugreifen, die nicht existiert. Die Konfiguration sieht folgendermaßen aus:

server {
        listen       127.0.0.1:8080;
        server_name  .somedomain.com;
    root  /var/www/somedomain.com;

        access_log /var/log/nginx/somedomain.com-access.nginx.log;
    error_log  /var/log/nginx/somedomain.com-error.nginx.log debug;

        location ~* \.php.$ {
        # Proxy all requests with an URI ending with .php*
        # (includes PHP, PHP3, PHP4, PHP5...)
        include /etc/nginx/fastcgi.conf;
        }

        # all other files
        location / {
            root  /var/www/somedomain.com;
        try_files $uri $uri/ ;
        }

    error_page 404 /errors/404.html;
        location /errors/ {
                alias /var/www/errors/;
        }       

        #this loads custom logging configuration which disables favicon error logging
        include /etc/nginx/drop.conf;
}

Diese Domain ist eine einfache statische HTML-Site, die nur zu Testzwecken verwendet wird. Ich würde erwarten, dass die error_page-Direktive als Reaktion darauf aktiviert wird, dass PHP-FPM bestimmte Dateien nicht finden kann, da ich fastcgi_intercept_errors aktiviert habe. in http block und nave error_page eingerichtet, aber ich vermute die anfrage schlägt schon vorher irgendwo auf interne umleitungen fehl. Jede Hilfe wäre sehr dankbar.


Meldet der Client-Browser eine Umleitungsschleife oder ist es Nginx? Wenn es der Client ist, an welchen Ort werden die Weiterleitungen weitergeleitet?
Shane Madden

beide berichten davon. Der Client erhält schließlich die URL /errors//errors//errors//errors//errors/...404.html
gyre

Wie sieht der Protokolleintrag von nginx aus?
Shane Madden

Antworten:


11

Der Täter ist: try_files $uri $uri/ ;

http://nginx.org/r/try_files (Beachten Sie, dass der letzte Parameter der Rückkehrcode oder der URI zur internen Umleitung ist.)

Wenn keine der Dateien gefunden wurde, wird eine interne Umleitung zu der im letzten Parameter angegebenen URL durchgeführt.


Vielen Dank. Hatte gerade einen dieser Fehler bei einem Roots Trellis LEMP-Setup. Passiert nach einem WooCommerce-Datenimport. Hatte es noch nie zuvor. Was würden Sie in diesen Fällen empfehlen? Parameter entfernen $uri/? Siehe Parameter hier: github.com/roots/trellis/blob/…
rhand

2

Wie andere gesagt haben, ist dies der Schuldige:

    try_files $uri $uri/ ;

Es wird eine Umleitungsschleife erstellt, da der letzte Parameter von try_filesauf den Speicherort verweisen sollte, wenn die Datei nicht gefunden wird. Ich habe es gelöst, indem ich a hinzugefügt =404habe:

    try_files $uri $uri/ =404 ;
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.