NGINX z odwrotnym proxy
Wprowadzenie do NGINX i Reverse Proxy
NGINX to wysokowydajny serwer HTTP, odwrotny serwer proxy i oprogramowanie typu open source używane przez wiele witryn internetowych na całym świecie. Jego wszechstronność i szybkość sprawiły, że stał się popularnym wyborem do hostingu, równoważenia obciążenia, buforowania i odwrotnego proxy. W szczególności reverse proxy jest potężnym narzędziem, które znajduje się przed serwerem internetowym i przekazuje żądania klientów do odpowiednich serwerów zaplecza. W tym artykule omówimy podstawy NGINX z odwrotnym proxy i jak go skutecznie skonfigurować.
Czym jest odwrotne proxy?
Odwrotne proxy działa jako pośrednik między klientami a serwerami zaplecza. W przeciwieństwie do zwykłego serwera proxy, który jest używany przez klientów do anonimowego dostępu do zasobów, odwrotny serwer proxy jest umieszczony po stronie serwera, obsługując żądania od klientów i dystrybuując je do odpowiednich serwerów zaplecza. Kluczowe zalety korzystania z odwrotnego serwera proxy obejmują:
- Równoważenie obciążenia: Dystrybucja żądań klientów na wiele serwerów, zapobieganie przeciążeniu pojedynczego serwera i poprawa ogólnej wydajności.
- Bezpieczeństwo i anonimowość: Ukrywanie adresów IP serwerów zaplecza, chroniąc je przed bezpośrednim dostępem do Internetu.
- Buforowanie: buforowanie statycznej zawartości w celu przyspieszenia dostarczania często żądanych zasobów.
- SSL Termination: Odciążenie szyfrowania i deszyfrowania SSL/TLS do odwrotnego proxy, zmniejszając obciążenie przetwarzania na serwerach zaplecza.
Dlaczego warto używać NGINX jako odwrotnego serwera proxy?
Lekka konstrukcja i nieblokująca architektura NGINX sprawiają, że jest to doskonały wybór dla odwrotnego serwera proxy. Może obsługiwać dużą liczbę jednoczesnych połączeń przy niskim zużyciu zasobów, co czyni go idealnym dla stron internetowych, które doświadczają dużego ruchu lub muszą utrzymywać wysoką dostępność. Niektóre zalety korzystania z NGINX jako odwrotnego serwera proxy obejmują:
- Wysoka wydajność: NGINX został zaprojektowany do wydajnej obsługi dużej liczby połączeń, dzięki czemu idealnie nadaje się do środowisk wymagających szybkich czasów reakcji na żądanie.
- Elastyczność: NGINX pozwala na łatwą konfigurację wielu serwerów zaplecza, umożliwiając złożone równoważenie obciążenia i konfiguracje przełączania awaryjnego.
- Skalowalność: W miarę wzrostu ruchu można dodawać kolejne serwery zaplecza i równoważyć obciążenie bez żadnych zakłóceń.
- Funkcje bezpieczeństwa: NGINX może wymuszać połączenia HTTPS, blokować określone adresy IP i zarządzać uwierzytelnianiem.
Jak skonfigurować NGINX jako odwrotny serwer proxy?
Konfiguracja NGINX jako odwrotnego serwera proxy obejmuje skonfigurowanie NGINX do nasłuchiwania przychodzących żądań HTTP lub HTTPS i przekazywania ich do jednego lub więcej serwerów zaplecza. Oto przewodnik krok po kroku, jak zacząć:
Krok 1: Zainstaluj NGINX
Jeśli nie zainstalowałeś NGINX na swoim serwerze, zacznij od jego instalacji. W przypadku większości dystrybucji systemu Linux można użyć następującego polecenia:
# Dla Debiana/Ubuntu
sudo apt update
sudo apt install nginx
# Dla CentOS/RHEL
sudo yum install epel-release
sudo yum install nginx
Po zainstalowaniu uruchom usługę NGINX:
sudo systemctl start nginx
Krok 2: Podstawowa konfiguracja odwrotnego serwera proxy NGINX
Aby skonfigurować podstawowe odwrotne proxy, należy edytować plik konfiguracyjny NGINX, zwykle znajdujący się w /etc/nginx/nginx.conf lub utworzyć nowy plik konfiguracyjny wewnątrz /etc/nginx/conf.d/. Poniżej znajduje się prosta konfiguracja odwrotnego proxy żądań do serwera zaplecza:
server {
listen 80;
server_name example.com;
location / {
proxy_pass http://backend_server;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
- listen 80;: Mówi NGINX, aby nasłuchiwał żądań HTTP na porcie 80.
- server_name: Zastąp example.com swoją domeną lub adresem IP.
- proxy_pass: Określa adres serwera zaplecza, do którego mają być przekazywane żądania.
- proxy_set_header: Ustawia dodatkowe nagłówki do przekazania do backendu, które mogą być przydatne do logowania i bezpieczeństwa.
Krok 3: Odwrotne proxy dla wielu serwerów zaplecza
Aby skonfigurować równoważenie obciążenia między wieloma serwerami zaplecza, można zdefiniować blok upstream:
upstream backend {
server backend1.example.com;
server backend2.example.com
serwer backend3.example.com;
}
server {
listen 80;
server_name example.com;
location / {
proxy_pass http://backend;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
Ta konfiguracja rozdziela żądania między backend1.example.com, backend2.example.com i backend3.example. com w trybie round-robin.
Krok 4: Włącz SSL dla bezpiecznych połączeń
Aby zabezpieczyć komunikację między klientami a odwrotnym serwerem proxy NGINX, można włączyć protokół SSL/TLS. Potrzebny będzie certyfikat SSL, który można uzyskać od dostawców takich jak Let’s Encrypt:
server {
listen 443 ssl;
server_name example.com;
ssl_certificate /path/to/ssl_certificate.crt;
ssl_certificate_key /path/to/ssl_certificate_key.key;
location / {
proxy_pass http://backend_server;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
Upewnij się, że zastąpiłeś ścieżki do certyfikatu SSL i klucza. Dzięki tej konfiguracji NGINX zakończy połączenie SSL i przekaże ruch do serwera zaplecza przez HTTP.
Krok 5: Testowanie i ponowne uruchomienie NGINX
Po wprowadzeniu zmian w konfiguracji NGINX ważne jest, aby przetestować konfigurację pod kątem błędów składni:
sudo nginx -t
Jeśli nie zostaną zgłoszone żadne błędy, uruchom ponownie NGINX, aby zastosować zmiany:
sudo systemctl restart nginx
Zaawansowana konfiguracja odwrotnego serwera proxy NGINX
W przypadku bardziej zaawansowanych konfiguracji można skonfigurować buforowanie, przepisywanie adresów URL i niestandardowe algorytmy równoważenia obciążenia. Oto kilka dodatkowych opcji:
- Buforowanie: Aby włączyć buforowanie, dodaj dyrektywy proxy_cache w bloku lokalizacji.
- Niestandardowe równoważenie obciążenia: Użyj różnych strategii równoważenia obciążenia, takich jak least_conn, aby dystrybuować ruch do serwera zaplecza z najmniejszą liczbą aktywnych połączeń.
- Health Checks: Skonfiguruj kontrole kondycji, aby upewnić się, że NGINX przekazuje ruch tylko do zdrowych serwerów zaplecza za pomocą proxy_next_upstream.
Wnioski
Używanie NGINX jako odwrotnego serwera proxy to potężny sposób na zarządzanie ruchem i poprawę skalowalności, wydajności i bezpieczeństwa aplikacji internetowych. Konfigurując NGINX do obsługi żądań i dystrybucji ich między serwerami zaplecza, można uzyskać wysoce dostępną i wydajną infrastrukturę. Niezależnie od tego, czy hostujesz małą witrynę internetową, czy aplikację na dużą skalę, NGINX z funkcjami odwrotnego proxy może być krytycznym elementem Twojej architektury.
Dzięki temu przewodnikowi powinieneś być dobrze przygotowany do skonfigurowania i zoptymalizowania NGINX jako odwrotnego proxy dla swoich potrzeb.