Devemos primeiro ler a documentação sobre proxy_pass cuidadosa e completamente.
O URI passado para o servidor upstream é determinado com base em se a diretiva "proxy_pass" é usada com o URI ou não. A barra à direita na diretiva proxy_pass significa que o URI está presente e é igual a /
. Ausência de barra final significa que o URI do chapéu está ausente.
Proxy_pass com URI :
location /some_dir/ {
proxy_pass http://some_server/;
}
Com o acima, há o seguinte proxy:
http:// your_server/some_dir/ some_subdir/some_file ->
http:// some_server/ some_subdir/some_file
Basicamente, /some_dir/
é substituído por /
para alterar o caminho da solicitação de /some_dir/some_subdir/some_file
para /some_subdir/some_file
.
Proxy_pass sem URI :
location /some_dir/ {
proxy_pass http://some_server;
}
Com o segundo (sem barra): o proxy funciona assim:
http:// your_server /some_dir/some_subdir/some_file ->
http:// some_server /some_dir/some_subdir/some_file
Basicamente, o caminho completo da solicitação original é transmitido sem alterações.
Portanto, no seu caso, parece que você deve apenas deixar cair a barra final para obter o que deseja.
Embargo
Observe que a regravação automática só funciona se você não usar variáveis em proxy_pass. Se você usar variáveis, deve reescrever-se:
location /some_dir/ {
rewrite /some_dir/(.*) /$1 break;
proxy_pass $upstream_server;
}
Existem outros casos em que a reescrita não funcionaria, por isso é necessário ler a documentação.
Editar
Lendo sua pergunta novamente, parece que não percebi que você apenas deseja editar a saída html.
Para isso, você pode usar a diretiva sub_filter . Algo como ...
location /admin/ {
proxy_pass http://localhost:8080/;
sub_filter "http://your_server/" "http://your_server/admin/";
sub_filter_once off;
}
Basicamente, a string que você deseja substituir e a string de substituição