Ich habe einen Ort
location /pass/ {
proxy_pass http://localhost:12345/;
}
Es soll also URLs http://example.com/pass/whatever
zu proxifizierenhttp://localhost:12345/whatever
Das, was ich nicht mag, ist, dass Nginx automatisch einen Schrägstrich hinzufügt
http://example.com/pass
und macht es http://example.com/pass/
über 301 umleiten
Wie kann ich dieses Verhalten einfach vermeiden? Ich möchte /pass
ohne nachgestellten Schrägstrich an einen anderen Ort gehen. Danke im Voraus!
/pass/(.*)
.../$1$is_args$args
) gelöst , andere Lösungen wärenAntworten:
Da es an einen anderen Ort verschoben werden soll , besteht eine natürliche Lösung darin, diesen Ort hinzuzufügen
Standardmäßig sucht nginx im Webstamm nach einer Datei mit dem Namen "pass". Wenn Ihnen diese Standardeinstellung nicht gefällt, können Sie weitere Anweisungen in diesen neuen Standortblock einfügen, um dies zu erreichen.
Sie können auch verwenden
so dass nginx die Übereinstimmung etwas schneller finden kann.
quelle
Es gibt einen Sonderfall, in dem ein
proxy_pass
mit einemlocation
Ende in/
zu einer automatischen impliziten301
Umleitung führen würde, ohne zum Backend zu wechseln. Sie müssen einen explizitenlocation
Schrägstrich ohne den abschließenden Schrägstrich erstellen , um dies zu vermeiden:ZB müssen Sie
/pass
location
zusätzlich zu dem vorhandenen ein explizites erstellen/pass/
, andernfalls wird ein impliziteslocation /pass {return 301 /pass/…;}
für Sie erstellt.Sind Sie jedoch sicher, dass Sie tatsächlich das tun möchten, was Sie versuchen? Wenn Sie eine Umleitung von wegzulassen gehst
/pass
zu/pass/
, dann relative Pfade gehen nicht zur Arbeit. Einige neuere Browser neigen auch dazu, fehlerhafte UI / UX-Funktionen zu verwenden, die dem Benutzer möglicherweise nicht den abschließenden Schrägstrich anzeigen, was die Dinge noch verwirrender machen kann, wenn versucht wird, die Unterscheidung zu beheben.quelle
/pass/
zwingt Umleitung für/pass
sie anzupassen, solange ich denken,/pass
sollte besser passen Lage/
und nicht/pass/