Zmodyfikuj strony HTML zwrócone przez odwrotne proxy nginx


17

Mam konfigurację odwrotnego proxy do dostępu do aplikacji strony trzeciej znajdującej się w intranecie z Internetu. Powiedzmy, że ta aplikacja jest pod adresem URL:

https://internalserver:8080/ (dostępny tylko z intranetu)

a serwer proxy jest włączony:

https://proxyserver/ (osiągalny z dowolnego miejsca na świecie)

Serwer proxy jest zarządzany przez nginx i działa dobrze. Gdy użytkownik uzyskuje dostęp https://proxyserver/ , pobiera treść aplikacji pod adresem https://internalserver:8080/.

Problem polega na tym, że aplikacja zapisuje bezwzględne adresy URL w odpowiedzi HTML, więc gdy użytkownik kliknie link do nowej strony, przeglądarka próbuje zlokalizować stronę z jej wewnętrzną nazwą, np. https://internalserver:8080/somepage Zamiast https://proxyserver/somepage.

Wiem, że to błąd programu, ale nie mogę go modyfikować.

Czy mogę przechwycić odpowiedź, zmodyfikować adresy URL i wysłać ją (zmodyfikowaną) do klienta końcowego za pomocą nginx? A może z innym narzędziem?

EDYCJA: Widziałem to pytanie wcześniej, ale mój przypadek jest bardziej konkretny, cytowane pytanie wymaga ogólnej modyfikacji. W takim przypadku program ad-hoc fast-cgi jest najlepszym rozwiązaniem, a to, czego chcę, to bardziej szczegółowe rozwiązanie (chyba) bardziej powszechnego scenariusza. podczas gdy program fast-cgi może działać, szukam najłatwiejszego, a może silniejszego i sprawdzonego w prawdziwym świecie rozwiązania dla tego scenariusza.


Odpowiedzi:



3

http://nginx.org/en/docs/http/ngx_http_sub_module.html

Moduł ngx_http_sub_module to filtr, który modyfikuje odpowiedź, zastępując jeden określony ciąg innym.

Ten moduł nie jest domyślnie zbudowany, należy go włączyć za pomocą parametru konfiguracyjnego --with-http_sub_module.

Przykładowa konfiguracja

sub_filter      </head>
    '</head><script language="javascript" src="$script"></script>';
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.