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.
źródło
Odpowiedzi:
Oto oficjalny film Nginx na YouTube, który pokazuje przepisywanie treści w treści.
https://youtu.be/7Y7ORypoHhE?t=20m22s
Rzeczywiście z sub_filter
http://nginx.org/en/docs/http/ngx_http_sub_module.html
W twoim przypadku patrzysz na coś takiego:
źródło
http://nginx.org/en/docs/http/ngx_http_sub_module.html
źródło