Verwenden von abschließenden Schrägstrichen in der Nginx-Konfiguration

8
    location /product {
        proxy_pass http://10.0.0.25:8080;
    }

Wenn ich meine erste Standortbeschreibung für den Produktordner verwende, sollte ich sie verwenden http://mysdomain.com/product/und kann sie nicht http://mysdomain.com/productüber den Browser verwenden. Ich meine, ich sollte ein Schrägstrich-Ende der URL verwenden. Ich möchte mit zwei Einstellungen auf den Produktordner zugreifen.

Gibt es einen Unterschied zwischen diesen:

    location /product/ {
        proxy_pass http://10.0.0.25:8080;
    }
Bartelom
quelle

Antworten:

10

Diese Orte sind unterschiedlich. Das erste wird /productionzum Beispiel übereinstimmen , das könnte nicht das sein, was Sie erwartet haben. Daher bevorzuge ich Positionen mit einem abschließenden Schrägstrich.

Beachten Sie auch Folgendes:

Wenn ein Speicherort durch eine Präfixzeichenfolge definiert ist, die mit dem Schrägstrich endet, und Anforderungen von proxy_pass, fastcgi_pass, uwsgi_pass, scgi_pass oder memcached_pass verarbeitet werden, erfolgt dies als Antwort auf eine Anforderung mit einem URI, der dieser Zeichenfolge entspricht, jedoch ohne Nach dem Schrägstrich wird eine permanente Umleitung mit dem Code 301 mit dem angehängten Schrägstrich an die angeforderte URI zurückgegeben.

Wenn Sie etwas haben wie:

location /product/ {
    proxy_pass http://backend;
}

und gehen Sie zu http://example.com/product, Nginx leitet Sie automatisch zu weiter http://example.com/product/.

Auch wenn Sie eine der oben genannten Anweisungen nicht verwenden, können Sie die Umleitung jederzeit manuell durchführen:

location = /product {
    rewrite ^ /product/ permanent;
}

Wenn Sie keine Umleitung wünschen, können Sie Folgendes verwenden:

location = /product {
    proxy_pass http://backend;
}
Alexey Ten
quelle
Ich verwende proxy_pass myip: 8080 / product und rufe dann den Browser unter dieser Adresse an. Der Browser leitet mich zu myip / product weiter und gibt eine Fehlerseite aus, die nicht angezeigt werden kann.
Barteloma
Verwenden Sie Backticks für Code. Markdown hat Ihren Kommentar analysiert und es ist schwierig herauszufinden, was Ihr Code wirklich ist.
Alexey Ten
Vielen Dank, es war wichtig zu wissen, dass, wenn / product / hinzugefügt wird, sogar der Browser, der es / product sendet, den 301 vom Server empfangen muss. Ein ganz gültiger Punkt.
Sur Max
3

Nein, diese sind nicht gleich - Sie müssen einen abschließenden Schrägstrich mit einem regulären Ausdruck verwenden, um beiden zu entsprechen, d. H.

location ~ /product/?

In dieser Antwort finden Sie eine detailliertere Antwort zum Abgleichen der gesamten URL.

Andrew M.
quelle