Jak utworzyć zwrotne proxy w Nginx

NGINX to wszechstronny i wydajny serwer WWW, szeroko stosowany jako serwer odwrotnego proxy. Odwrotny serwer proxy pośredniczy w żądaniach klientów, dystrybuując je do jednego lub większej liczby serwerów zaplecza. Taka konfiguracja przynosi korzyści w zakresie równoważenia obciążenia, poprawy bezpieczeństwa i zapewnienia wysokiej dostępności. Używanie NGINX jako odwrotnego proxy może zwiększyć skalowalność i niezawodność usług internetowych.

W tym przewodniku zademonstrujemy, jak utworzyć odwrotne proxy w NGINX i omówimy niezbędne kroki konfiguracyjne, aby efektywnie kierować żądania klientów do serwerów zaplecza.

Utwórz i skonfiguruj zwrotne proxy w Nginx

Konfigurowanie podstawowego zwrotnego serwera proxy w Nginx

Najpierw, aby rozpocząć konfigurowanie Nginx jako odwrotnego proxy, uzyskaj dostęp do pliku konfiguracyjnego Nginx. Zazwyczaj plik ten znajduje się w /etc/nginx/nginx.conf. Otwórz go za pomocą preferowanego edytora tekstu, na przykład za pomocą Sudo Nano:

sudo nano /etc/nginx/nginx.conf

Wewnątrz pliku konfiguracyjnego skup się na bloku http. Tutaj wstawisz blok serwera, kamień węgielny konfiguracji odwrotnego proxy. Blok serwera nasłuchuje na określonym porcie, zwykle porcie 80, pod kątem ruchu HTTP. W tym bloku lokalizacja/dyrektywa mówi Nginxowi, jak obsługiwać przychodzące żądania. Użyj dyrektywy proxy_pass, aby przekierować te żądania do serwera zaplecza, określonego przez jego adres IP lub nazwę hosta.

Na przykład konfiguracja może wyglądać następująco:

http {
    ...
    server {
        listen 80;
        location / {
            proxy_pass http://backendserver_address;
        }
    }
}

Pamiętaj, aby zastąpić adres_serwera zaplecza rzeczywistym adresem serwera zaplecza. Ta prosta konfiguracja mówi Nginxowi, aby przekazywał wszystkie przychodzące żądania HTTP do określonego serwera zaplecza.

Zaawansowana konfiguracja odwrotnego proxy w Nginx

W bardziej zaawansowanej konfiguracji możesz chcieć skonfigurować dodatkowe aspekty odwrotnego proxy. Może to obejmować ustawienia równoważenia obciążenia, zakończenia protokołu SSL lub buforowania.

Wdrażanie równoważenia obciążenia

Jeśli obsługujesz wiele serwerów zaplecza, Nginx może dystrybuować między nimi ruch przychodzący, zwiększając wydajność i niezawodność. W przypadku równoważenia obciążenia należy zmodyfikować dyrektywę proxy_pass tak, aby wskazywała grupę serwerów zdefiniowaną w bloku nadrzędnym. Na przykład:

http {
    upstream backend_servers {
        server backend1.example.com;
        server backend2.example.com;
    }

    server {
        listen 80;
        location / {
            proxy_pass http://backend_servers;
        }
    }
}

Ta konfiguracja pozwala Nginx zrównoważyć obciążenie pomiędzy backendem1.example.com i backend2.example.com.

Konfiguracja zakończenia protokołu SSL

W przypadku zakończenia SSL upewnij się, że blok serwera nasłuchuje na porcie 443 i podaj lokalizację certyfikatu SSL i pliku klucza. Konfiguracja może przypominać:

server {
    listen 443 ssl;
    ssl_certificate /path/to/certificate.pem;
    ssl_certificate_key /path/to/key.pem;

    location / {
        proxy_pass http://backendserver_address;
    }
}

Ta konfiguracja umożliwia Nginx obsługę połączeń SSL i odszyfrowywanie żądań przed przesłaniem ich do serwerów zaplecza.

Finalizowanie zmian

Po skonfigurowaniu Nginx przetestuj konfigurację pod kątem błędów składniowych za pomocą:

nginx -t

Jeśli test zakończy się pomyślnie, załaduj ponownie Nginx, aby zastosować zmiany, używając:

sudo systemctl reload nginx

Ten krok gwarantuje, że zmiany zaczną obowiązywać bez przerywania bieżących połączeń.

Dodatkowa nauka: Konfigurowanie wartości nagłówka proxy Nginx

Podczas konfigurowania Nginx jako odwrotnego proxy ważne jest, aby poprawnie ustawić wartości nagłówka proxy. Nagłówki te mają kluczowe znaczenie dla przekazywania szczegółów pierwotnego żądania klienta do serwerów zaplecza. Informacje te mogą obejmować adres IP klienta, oryginalny protokół żądania i inne. Prawidłowe ustawienie tych nagłówków gwarantuje, że serwery zaplecza będą miały kontekst, którego potrzebują, aby odpowiednio odpowiedzieć na żądania.

Zrozumienie nagłówków proxy

Nagłówki proxy są niezbędne w konfiguracji odwrotnego proxy, ponieważ zawierają informacje o pierwotnym żądaniu klienta. Informacje te są niezbędne, aby serwery zaplecza mogły podejmować świadome decyzje dotyczące obsługi przychodzących żądań. Na przykład znajomość pierwotnego adresu IP klienta może być ważna ze względów rejestrowania, analiz lub bezpieczeństwa.

Typowe konfiguracje nagłówka proxy

Niektóre z typowych nagłówków proxy, które możesz skonfigurować w Nginx, obejmują:

  • X-Real-IP: ten nagłówek służy do przekazywania adresu IP oryginalnego klienta do serwera zaplecza.
  • X-Forwarded-For: Podobny do X-Real-IP, nagłówek ten zawiera listę wszystkich serwerów, przez które przeszło żądanie, łącznie z adresem IP klienta.
  • X-Forwarded-Proto: Ten nagłówek wskazuje protokół (HTTP lub HTTPS) użyty w pierwotnym żądaniu klienta.

Implementowanie ustawień nagłówka proxy w Nginx

Aby ustawić te nagłówki w konfiguracji Nginx, musisz zmodyfikować blok lokalizacji w bloku serwera. Oto przykład ustawienia tych nagłówków:

server {
    listen 80;
    location / {
        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;
        proxy_pass http://backendserver_address;
    }
}

W tej konfiguracji $remote_addr i $scheme są zmiennymi, które Nginx automatycznie wypełnia odpowiednio adresem IP klienta i schematem żądania (HTTP lub HTTPS).

Najlepsze praktyki dotyczące nagłówków proxy

Konfigurując nagłówki proxy, należy wziąć pod uwagę bezpieczeństwo i dokładność przesyłanych informacji. Aby zapobiec potencjalnemu fałszowaniu, upewnij się, że serwery zaplecza są skonfigurowane tak, aby ufały tym nagłówkom tylko wtedy, gdy pochodzą one z odwrotnego proxy Nginx.

Wniosek

Pomyślnie konfigurując NGINX jako odwrotne proxy, możesz zoptymalizować swoją infrastrukturę sieciową w celu uzyskania lepszej wydajności, bezpieczeństwa i skalowalności. Regularnie monitoruj i dostosowuj swoją konfigurację, aby zapewnić optymalny rozkład obciążenia i czas reakcji. Wdrożenie odwrotnego proxy w NGINX zapewnia solidne rozwiązanie do zarządzania żądaniami klientów i utrzymywania wysokiej dostępności usług internetowych.

Joshua James
Chodź za mną
Najnowsze posty autorstwa Joshua James (widzieć wszystko)

Dodaj komentarz