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.

gyre
quelle
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.

VBart
quelle
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 ;
joepio
quelle