Nginx で URL を変換しようとしています (例: example.com/$uri から example.com/path/$uri)

Nginx で URL を変換しようとしています (例: example.com/$uri から example.com/path/$uri)

「パス」なしで example.com にアクセスしようとする場合 (example.com/path)、Nginx に URL にパスを追加する必要があります。すでにパスがある場合は、書き換えを無視します。ご協力いただければ幸いです。

私は戻ろうとした

301 $scheme://example.com/path$request_uri; を返し、10の制限に達するまでリダイレクトするだけです。

私も書き直そうとしましたが、明らかにそれもうまくいきません。

トポロジは [プロキシ] -> [Web サーバー] です。両方でリダイレクトを試みましたが、プロキシで変換を行うべきか、Web サーバーで変換を行うべきかわかりません。

答え1

バックエンドアプリにリクエストをプロキシしたい場合は、

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

書き換えルールも可能で、否定先読み正規表現ですが、パフォーマンスは最初の例よりもいくらか低くなります。

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

関連情報