Questo è un seguito alla mia precedente domanda su come fare in modo che il reindirizzamento 302 del proxy inverso nginx reindirizzi a una sottocartella URI anziché a root .
Ho un server proxy nginx che utilizza le direttive rewrite
e proxy_pass
per delegare le richieste esterne a un URL come https://domain.com/my/web/app/
a un server LAN interno all'indirizzo https://10.0.0.22/
. Ecco il mio tentativo di rappresentare la traduzione in UML ASCII:
.-------------. .------------------.
| Nginx proxy | | Local web server |
| (domain.com) | | (10.0.0.22) |
'-------------' '------------------'
| |
| |
GET https://domain.com/my/web/app/ ----------->| |
|---------------->| GET /
| |
|<----------------| 302 redirect /login.php
302 redirect /my/web/app/login.php <-----------| |
| |
GET https://domain.com/my/web/app/login.php -->| |
|---------------->| GET /login.php
| |
|<----------------| 200
HTML body content (images, CSS, links) <-------|
Ecco l'effettivo blocco di posizione nel mio file di configurazione nginx:
location ^~ /my/web/app/
{
proxy_buffering off;
rewrite /my/web/app/(.*) /$1 break;
proxy_pass https://10.0.0.22/;
proxy_redirect default;
}
Funziona benissimo per la traduzione di URI tra i percorsi URI interni ed esterni per richieste e risposte HTTP, ma tutti gli URI nel contenuto HTML (immagini del corpo, CSS, script) non vengono tradotti.
Ad esempio, le immagini con percorsi relativi incorporati nella risposta HTML, con URI come /images/logo.png, vengono restituite al client Web e interpretate come https://domain.com/images/logo.png
anziché https://domain.com/my/web/app/images/logo.png
.
Posso capire perché questo stia accadendo, ma sarebbe meraviglioso se ci fosse un modo per delegare dinamicamente il contenuto e le richieste. C'è un modo per ottenere nginx per convertire anche gli URI incorporati nel contenuto HTML? È possibile analizzare e aggiornare dinamicamente il contenuto HTML mentre passa attraverso il server proxy?