Jest to kontynuacja mojego wcześniejszego pytania, jak przekierować nginx odwrotne proxy 302 do podfolderu URI zamiast root .
Mam serwer proxy Nginx, który korzysta z dyrektyw rewrite
i proxy_pass
do proxy zewnętrznych żądań do adresu URL, jak https://domain.com/my/web/app/
na wewnętrzny serwer LAN pod adresem https://10.0.0.22/
. Oto moja próba przedstawienia tłumaczenia w ASCII UML:
.-------------. .------------------.
| 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) <-------|
Oto rzeczywisty blok lokalizacji w moim pliku konfiguracyjnym nginx:
location ^~ /my/web/app/
{
proxy_buffering off;
rewrite /my/web/app/(.*) /$1 break;
proxy_pass https://10.0.0.22/;
proxy_redirect default;
}
Działa doskonale do tłumaczenia URI między wewnętrznymi i zewnętrznymi ścieżkami URI dla żądań i odpowiedzi HTTP, ale żadne URI w treści HTML (obrazy ciała, CSS, skrypty) nie są tłumaczone.
Na przykład obrazy z względnymi ścieżkami osadzonymi w odpowiedzi HTML, z identyfikatorami URI takimi jak /images/logo.png, są przekazywane z powrotem do klienta WWW i interpretowane jako https://domain.com/images/logo.png
zamiast https://domain.com/my/web/app/images/logo.png
.
Rozumiem, dlaczego tak się dzieje, ale byłoby wspaniale, gdyby istniał sposób na dynamiczne zastępowanie treścią proxy oraz żądaniami. Czy istnieje sposób, aby Nginx konwertował również identyfikatory URI osadzone w treści HTML? Czy jest możliwe dynamiczne analizowanie i aktualizowanie treści HTML podczas przechodzenia przez serwer proxy?