Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Serwer proxy to pośredniczący serwer, który znajduje się między klientem (takim jak aplikacja) i serwerem docelowym (takim jak interfejs API zaplecza). Po wysłaniu żądania przez aplikację serwer proxy odbierze go jako pierwszy. Serwer proxy może następnie przekazać żądanie do serwera docelowego, zmodyfikować go, zablokować lub zwrócić odpowiedź bezpośrednio.
Krótko mówiąc, serwer proxy działa w imieniu klienta lub serwera w celu pośredniczącej komunikacji.
Jak działa serwer proxy
Serwery proxy działają na poziomie HTTP (lub innych protokołów aplikacji) przez odbieranie żądań przychodzących i wykonywanie co najmniej jednej z następujących akcji:
- Przekazywanie żądania do serwera docelowego, a następnie przekazywanie odpowiedzi z powrotem do klienta.
- modyfikowanie nagłówków, adresów URL lub ładunków przed przekazaniem dalej.
- przechwytywanie i odpowiadanie na żądanie lokalnie bez kontaktu z serwerem docelowym.
- Odrzucanie żądania na podstawie reguł lub zasad dostępu.
Z perspektywy klienta po prostu wysyła żądanie do adresu URL. Serwer proxy obsługuje wszystkie inne elementy w tle. Wzorzec to klient, następnie proxy, a potem serwer docelowy.
Ten wzorzec wprowadza warstwę kontroli i abstrakcji, której można użyć do zwiększenia bezpieczeństwa, wglądu, wydajności i możliwości testowania.
Typy serwerów proxy
Istnieją różne typy serwerów proxy. Każdy z nich jest odpowiedni do określonych ról w architekturze systemu.
Przekazywanie serwera proxy
Serwer proxy typu forward znajduje się przed klientem . Gdy aplikacja wysyła żądanie, przechodzi przez serwer proxy, który decyduje, czy i jak przekazać je dalej. Serwery proxy przesyłania dalej są często używane do:
- Kontrolowanie dostępu do zasobów zewnętrznych.
- Anonimizuj ruch klienta.
- Rejestrowanie ruchu wychodzącego na potrzeby monitorowania.
- Zastosuj filtrowanie lub przekształcanie zawartości.
Zwrotny serwer proxy
Zwrotny serwer proxy znajduje się przed serwerem . Klienci nie wiedzą o podstawowej infrastrukturze zaplecza. Zwrotny serwer proxy odbiera żądania przychodzące i przekazuje je do jednego z kilku serwerów zaplecza. Odwrotne serwery proxy są często używane do:
- Równoważenie obciążenia ruchu między wieloma usługami.
- Obsługa buforowanych odpowiedzi w celu zmniejszenia obciążenia zaplecza.
- Kończenie połączeń TLS/SSL.
- Ukryj szczegóły usługi wewnętrznej w publicznej sieci.
Przezroczysty serwer proxy
Przezroczysty serwer proxy przechwytuje ruch bez jawnego skonfigurowania klienta do korzystania z niego. Ten typ jest używany w środowiskach firmowych lub internetowych dostawców usług w celu wymuszania zasad lub monitorowania użycia.
Dlaczego serwery proxy mają znaczenie dla deweloperów aplikacji
Często zespoły infrastruktury lub sieci zarządzają serwerami proxy. Jednak serwery proxy bezpośrednio wpływają na zachowanie aplikacji, zwłaszcza w środowiskach deweloperskich i testowych. Oto kilka praktycznych sposobów, w jaki wpływają one na codzienną pracę.
Debugowanie i obserwowanie
Serwery proxy mogą przechwytywać i sprawdzać ruch HTTP. Narzędzia takie jak Dev Proxy, Fiddler, Proxyman, Charles Proxy lub mitmproxy działają jako lokalne serwery proxy przekazujące. Aplikację można uruchamiać za pomocą nich, aby analizować żądania i odpowiedzi, wykrywać błędy i weryfikować nagłówki lub tokeny uwierzytelniania.
Brama interfejsu API i routing
W wielu systemach produkcyjnych ruch do zaplecza aplikacji jest kierowany przez bramę interfejsu API lub zwrotny serwer proxy, taki jak NGINX, lub natywną dla chmury usługę, taką jak Azure API Management. Te serwery proxy obsługują routing, uwierzytelnianie, ograniczanie szybkości i nie tylko.
Podczas projektowania interfejsu API lub tworzenia usług rozproszonych należy zrozumieć, jak serwery proxy wpływają na nagłówki (takie jak X-Forwarded-For), limity czasu i limity rozmiaru żądania.
Mechanizm CORS i programowanie lokalne
Podczas programowania lokalnego, zwłaszcza w aplikacjach internetowych, mogą wystąpić ograniczenia współużytkowania zasobów między źródłami (CORS) podczas wywoływania interfejsów API z przeglądarki. Proxy programistyczne może przekazywać żądania do docelowego interfejsu API, zmieniając nagłówki w celu obejścia ograniczeń mechanizmu CORS. Typowe przykłady narzędzi deweloperskich do ponownego zapisywania żądań CORS to vite, webpack-dev-serverlub niestandardowe oprogramowanie pośredniczące serwera proxy w strukturach, takich jak Express lub ASP.NET Core.
Wirtualizacja i testowanie usług
Serwery proxy mogą symulować interfejsy API zaplecza. Ta funkcja jest przydatna, gdy rzeczywista usługa jest niedostępna, niestabilna lub kosztowna do użycia podczas testowania. Przechwytując i wyśmiewając odpowiedzi, można przetestować zachowanie aplikacji w różnych scenariuszach, takich jak przekroczenia limitu czasu, błędy lub źle sformułowane dane.
Narzędzia, takie jak dev proxy lub niestandardowe implementacje serwera proxy, są często używane do tego celu w ramach integracji i testów kompleksowej.
Uwierzytelnianie i zabezpieczenia
Serwery proxy są często linią frontu obrony w zabezpieczaniu aplikacji. Mogą wymuszać kontrole dostępu, wprowadzać nagłówki uwierzytelniania lub przerywać połączenia TLS/SSL. Jako deweloper ważne jest, aby wiedzieć, jak działa aplikacja, gdy znajduje się za serwerem proxy i jak uzyskiwać dostęp do nagłówków zawierających informacje o uwierzytelnianiu lub tożsamości.
Typowe zagadnienia dotyczące nagłówków i serwera proxy
Gdy żądanie przechodzi przez serwer proxy, niektóre nagłówki są dodawane lub modyfikowane w celu zachowania ważnych metadanych. Na przykład:
-
X-Forwarded-For: wskazuje oryginalny adres IP klienta. -
X-Forwarded-Proto: wskazuje oryginalny protokół (HTTP lub HTTPS). -
X-Forwarded-Host: wskazuje oryginalny host żądany przez klienta.
Gdy aplikacja działa za zwrotnym serwerem proxy, upewnij się, że framework lub platforma są skonfigurowane do ufania i prawidłowego interpretowania tych nagłówków.
Dev Proxy jako serwer proxy do celów deweloperskich i testowych.
Dev Proxy to serwer proxy pośredniczący, którego można użyć do przechwytywania i modyfikowania żądań z aplikacji do dowolnego serwera docelowego. Za pomocą serwera proxy deweloperskiego można wykonywać następujące czynności:
- Zobacz, jak aplikacja reaguje na błędy interfejsu API.
- Sprawdź, jak aplikacja obsługuje limity szybkości interfejsu API.
- Zobacz, jak aplikacja obsługuje powolne interfejsy API.
- Szybko skonfiguruj mock API bez pisania linijki kodu.
- Ulepszanie aplikacji za pomocą kontekstowych wskazówek dotyczących korzystania z interfejsów API.