まず、proxy_passのドキュメントを注意深く完全に読む必要があります。
アップストリームサーバーに渡されるURIは、「proxy_pass」ディレクティブがURIで使用されているかどうかに基づいて決定されます。proxy_passディレクティブの末尾のスラッシュは、URIが存在し、に等しいことを意味し/
ます。末尾にスラッシュがないということは、帽子のURIがないことを意味します。
URI付きProxy_pass:
location /some_dir/ {
proxy_pass http://some_server/;
}
上記では、次のプロキシがあります。
http:// your_server/some_dir/ some_subdir/some_file ->
http:// some_server/ some_subdir/some_file
基本的に、/some_dir/
はに置き換えられ/
、リクエストパスをから/some_dir/some_subdir/some_file
に変更し/some_subdir/some_file
ます。
URIなしのProxy_pass:
location /some_dir/ {
proxy_pass http://some_server;
}
2番目の場合(末尾のスラッシュなし):プロキシは次のようになります:
http:// your_server /some_dir/some_subdir/some_file ->
http:// some_server /some_dir/some_subdir/some_file
基本的に、元の完全な要求パスは変更なしで渡されます。
したがって、あなたの場合、必要なものを取得するには、末尾のスラッシュを削除する必要があるようです。
警告
自動書き換えは、proxy_passで変数を使用しない場合にのみ機能することに注意してください。変数を使用する場合は、自分で書き直す必要があります。
location /some_dir/ {
rewrite /some_dir/(.*) /$1 break;
proxy_pass $upstream_server;
}
書き換えが機能しない場合もあります。そのため、ドキュメントを読む必要があります。
編集
あなたの質問をもう一度読んで、あなたがhtml出力を編集したいだけだと私は見逃したようです。
そのためには、sub_filterディレクティブを使用できます。何かのようなもの ...
location /admin/ {
proxy_pass http://localhost:8080/;
sub_filter "http://your_server/" "http://your_server/admin/";
sub_filter_once off;
}
基本的に、置き換えたい文字列と置き換え文字列