Ich versuche, Nginx dazu zu bringen, eine URL umzuwandeln, z. B. von example.com/$uri in example.com/path/$uri.

Ich versuche, Nginx dazu zu bringen, eine URL umzuwandeln, z. B. von example.com/$uri in example.com/path/$uri.

Wenn ich versuche, auf example.com ohne den „Pfad“ (example.com/path) zuzugreifen, muss Nginx den Pfad zur URL hinzufügen. Wenn er bereits vorhanden ist, kann ich die Umschreibung ignorieren. Jede Hilfe ist willkommen.

Ich habe versucht, zurückzukehren

return 301 $scheme://example.com/path$request_uri; und es wird einfach umgeleitet, bis das Limit von 10 erreicht ist

Ich habe auch versucht, es neu zu schreiben, aber offensichtlich gelingt mir das auch nicht.

die Topologie ist [Proxy] -> [Webserver]. Ich habe versucht, die Umleitung auf beiden durchzuführen, bin mir nicht sicher, ob ich die Transformation auf dem Proxy oder dem Webserver durchführen soll.

Antwort1

Wenn Sie Ihre Anfragen an die Backend-App weiterleiten möchten, können Sie Folgendes verwenden:

location / {
    proxy_pass http://upstream/path/;
}
location /path/ {
    proxy_pass http://upstream;
}

Eine Umschreiberegel ist auch möglich, indemnegativer VorausblickRegex, allerdings wird die Leistung etwas geringer sein als im ersten Beispiel:

rewrite ^((?!/path/).*) /path$1 ...

verwandte Informationen