Dovremmo prima leggere attentamente e completamente la documentazione su proxy_pass .
L'URI passato al server upstream è determinato in base al fatto che la direttiva "proxy_pass" venga utilizzata con URI o meno. La barra finale nella direttiva proxy_pass significa che l'URI è presente ed è uguale a /. L'assenza di una barra finale significa che l'URI del cappello è assente.
Proxy_pass con URI :
location /some_dir/ {
proxy_pass http://some_server/;
}
Con quanto sopra, c'è il seguente proxy:
http:// your_server/some_dir/ some_subdir/some_file ->
http:// some_server/ some_subdir/some_file
Fondamentalmente, /some_dir/viene sostituito da /per modificare il percorso della richiesta da /some_dir/some_subdir/some_filea /some_subdir/some_file.
Proxy_pass senza URI :
location /some_dir/ {
proxy_pass http://some_server;
}
Con la seconda (nessuna barra finale): il proxy funziona così:
http:// your_server /some_dir/some_subdir/some_file ->
http:// some_server /some_dir/some_subdir/some_file
Fondamentalmente, il percorso completo della richiesta originale viene passato senza modifiche.
Quindi, nel tuo caso, sembra che dovresti semplicemente rilasciare la barra finale per ottenere ciò che desideri.
Avvertimento
Nota che la riscrittura automatica funziona solo se non usi le variabili in proxy_pass. Se usi le variabili, dovresti riscriverti:
location /some_dir/ {
rewrite /some_dir/(.*) /$1 break;
proxy_pass $upstream_server;
}
Ci sono altri casi in cui la riscrittura non funzionerebbe, ecco perché leggere la documentazione è d'obbligo.
modificare
Leggendo di nuovo la tua domanda, sembra che mi sia perso il fatto che vuoi solo modificare l'output html.
Per questo, puoi usare la direttiva sub_filter . Qualcosa di simile a ...
location /admin/ {
proxy_pass http://localhost:8080/;
sub_filter "http://your_server/" "http://your_server/admin/";
sub_filter_once off;
}
Fondamentalmente, la stringa che si desidera sostituire e la stringa di sostituzione