Co to jest odwrotny serwer proxy i jak to działa?
Opublikowany: 2022-08-09
Odwrotne serwery proxy są przydatnym narzędziem w zestawie narzędzi każdego administratora systemu. Mają wiele zastosowań, w tym równoważenie obciążenia, ochronę przed atakami DDOS
Co to są odwrotne proxy?
Zwykły serwer proxy, zwany Forward Proxy, to serwer, przez który przekierowywane jest połączenie użytkownika. Pod wieloma względami przypomina prostą sieć VPN, która znajduje się przed Twoim połączeniem internetowym. Sieci VPN są częstym tego przykładem, ale obejmują również takie rzeczy, jak szkolne zapory ogniowe, które mogą blokować dostęp do niektórych treści.
Odwrotny serwer proxy działa nieco inaczej. Jest to narzędzie backendowe używane przez administratorów systemu. Zamiast łączyć się bezpośrednio z witryną obsługującą zawartość, zwrotny serwer proxy, taki jak NGINX, może znajdować się pośrodku. Gdy otrzyma żądanie od użytkownika, prześle je dalej lub „proxy” do serwera końcowego. Ten serwer jest nazywany „serwerem początkowym”, ponieważ faktycznie odpowiada na żądania.
Podczas gdy użytkownik prawdopodobnie będzie wiedział, czy jest kierowany przez serwer proxy, taki jak VPN lub zapora, odwrotne serwery proxy są narzędziami zaplecza. O ile użytkownik wie, po prostu łączy się ze stroną internetową. Wszystko za odwróconym serwerem proxy jest ukryte, a to ma również wiele zalet.
Ten efekt występuje jednak również w odwrotnej kolejności. Serwer pochodzenia nie ma bezpośredniego połączenia z użytkownikiem i zobaczy tylko kilka żądań pochodzących z adresu IP zwrotnego proxy. Może to stanowić problem, ale większość usług proxy, takich jak NGINX, doda do żądania nagłówki, takie jak X-Forwarded-For
. Te nagłówki informują serwer pochodzenia o rzeczywistym adresie IP klienta.
Do czego służą odwrotne proxy?
Odwrotne serwery proxy mają dość prostą koncepcję, ale okazują się zaskakująco przydatnym narzędziem z wieloma nieoczekiwanymi przypadkami użycia.
Równoważenie obciążenia
Jedną z głównych zalet zwrotnego serwera proxy jest to, jak lekkie mogą być. Ponieważ tylko przesyłają żądania, nie muszą wykonywać mnóstwa przetwarzania, szczególnie w sytuacjach, w których konieczne jest wykonanie zapytań do bazy danych.
Oznacza to, że wąskim gardłem jest często serwer pochodzenia, ale mając przed sobą zwrotne proxy, możesz łatwo mieć wiele serwerów pochodzenia. Na przykład proxy może wysyłać 50% żądań do jednego serwera i 50% do drugiego, podwajając pojemność witryny. Usługi takie jak HAProxy zostały zaprojektowane, aby dobrze sobie z tym poradzić.
Jest to bardzo częsty przypadek użycia, a większość dostawców usług w chmurze, takich jak Amazon Web Services (AWS), oferuje równoważenie obciążenia jako usługę, oszczędzając Ci kłopotów z samodzielną konfiguracją. Dzięki automatyzacji w chmurze możesz nawet automatycznie skalować liczbę serwerów pochodzenia w odpowiedzi na ruch, co jest funkcją zwaną „skalowaniem automatycznym”.
Systemy równoważenia obciążenia, takie jak elastyczny system równoważenia obciążenia AWS, można skonfigurować tak, aby automatycznie rekonfigurowały się, gdy serwery początkowe przechodzą w górę i w dół, a wszystko to jest możliwe dzięki zwrotnemu serwerowi proxy pod maską.
POWIĄZANE: Jak zacząć korzystać z elastycznych systemów równoważenia obciążenia AWS

Buforowanie
Ponieważ zwrotny serwer proxy często odpowiada znacznie szybciej niż serwer pochodzenia, powszechnie stosowana jest technika zwana buforowaniem w celu przyspieszenia żądań na wspólnych trasach. Buforowanie ma miejsce, gdy dane strony są przechowywane na zwrotnym serwerze proxy i są żądane od serwera pochodzenia tylko raz na kilka sekund/minut. To znacznie zmniejsza obciążenie serwera pochodzenia.
Na przykład artykuł, który teraz czytasz, był obsługiwany przez WordPress, który musi połączyć się z bazą danych SQL, aby pobrać treść artykułu i metadane. Robienie tego przy każdym odświeżeniu strony jest marnotrawstwem, biorąc pod uwagę, że strona tak naprawdę się nie zmienia. Tak więc ta trasa może być buforowana, a odwrotny serwer proxy po prostu odeśle ostatnią odpowiedź do następnego użytkownika, zamiast ponownie zawracać sobie głowę WordPress.
Dedykowana sieć odwrotnych serwerów proxy, które przechowują zawartość w pamięci podręcznej, nazywana jest siecią dostarczania treści lub CDN. Sieci CDN, takie jak CloudFlare lub Fastly, są bardzo często używane przez duże witryny internetowe w celu przyspieszenia globalnego dostarczania. Serwery na całym świecie, które przechowują zawartość w pamięci podręcznej, nazywane są „węzłami brzegowymi”, a posiadanie ich wielu może sprawić, że Twoja witryna będzie bardzo zgrabna.
Ochrona sieci i prywatność
Ponieważ użytkownik nie wie, co kryje się za zwrotnym serwerem proxy, nie będzie mógł łatwo zaatakować bezpośrednio Twoich serwerów pochodzenia. W rzeczywistości odwrotne serwery proxy są powszechnie używane z serwerami pochodzenia w prywatnych podsieciach, co oznacza, że w ogóle nie mają połączeń przychodzących z zewnętrznym Internetem.
Dzięki temu konfiguracja sieci jest prywatna, a bezpieczeństwo przez ukrycie nigdy nie jest niezawodne, ale jest to lepsze niż pozostawienie jej otwartej na atak.
To nieodłączne zaufanie może być również przydatne podczas planowania sieci. Na przykład serwer API, który komunikuje się z bazą danych, jest podobny do zwrotnego serwera proxy. Baza danych wie, że może ufać serwerowi API w prywatnej podsieci, a serwer API działa jako zapora dla bazy danych, przepuszczając przez nią tylko właściwe połączenia.
Konfigurowalny interfejs
Jedną z zalet odwrotnych serwerów proxy, takich jak NGINX, jest to, jak bardzo są konfigurowalne. Często warto mieć je przed innymi usługami, aby skonfigurować sposób, w jaki użytkownicy uzyskują dostęp do tych usług.
Na przykład NGINX jest w stanie ocenić ograniczenia żądań do określonych tras, co może uniemożliwić nadużyciom wysyłanie tysięcy żądań do serwerów pochodzenia z jednego adresu IP. Nie powstrzymuje to ataków DDOS, ale dobrze jest mieć.
NGINX jest również w stanie przekazywać ruch z wielu nazw domen za pomocą konfigurowalnych bloków „serwerowych”. Na przykład może wysyłać żądania do example.com
do serwera pochodzenia, ale wysyłać api.example.com
do specjalnego serwera API lub files.example.com
do magazynu plików i tak dalej. Każdy serwer może mieć własną konfigurację i reguły.
NGINX może również dodawać dodatkowe funkcje do istniejących serwerów pochodzenia, takie jak scentralizowane certyfikaty HTTPS i konfiguracja nagłówków.
Czasami warto mieć NGINX na tym samym komputerze, co inna usługa lokalna, aby po prostu obsługiwać zawartość z tej usługi. Na przykład interfejsy API sieci Web ASP.NET używają wewnętrznego serwera sieci Web o nazwie Kestrel, który dobrze odpowiada na żądania, ale niewiele więcej. Bardzo często uruchamia się Kestrel na porcie prywatnym i używa NGINX jako konfigurowalnego zwrotnego serwera proxy.
Scentralizowane rejestrowanie
Ten jest dość prosty, ale większość ruchu przechodzi przez jedną usługę, co ułatwia sprawdzanie dzienników. Dziennik dostępu NGINX zawiera wiele przydatnych informacji o ruchu i chociaż nie przewyższa funkcji usług takich jak Google Analytics, jest to świetna informacja.
POWIĄZANE: Jak skonfigurować panel analityki i monitorowania Elasticsearch dla swojej firmy