Oprócz Apache, Nginx jest najpopularniejszym dostępnym serwerem WWW. Oprócz tego, że jest serwerem internetowym, może być również używany jako moduł równoważenia obciążenia lub odwrotne proxy. W tym samouczku Quantrimang.com pokaże Ci, jak używać Nginx jako odwrotnego proxy.
Co to jest odwrotne proxy?
Serwer proxy działa jako pośrednik między klientem a innym serwerem. Serwer proxy pobiera zasoby z serwera, z którym chcesz się połączyć, i wysyła je do przeglądania. Odwrotne proxy działa w ten sam sposób, z tą różnicą, że role są odwrócone. Kiedy żądasz informacji od serwera, odwrotne proxy wstrzymuje żądanie i wysyła je do odpowiedniego serwera zaplecza. Umożliwia to administratorom systemu korzystanie z serwera do wielu aplikacji, a także zapewnia płynniejszy przepływ ruchu między klientem a serwerem.

Korzyści z odwrotnych serwerów proxy
W zależności od aplikacji możesz mieć różne przypadki użycia odwrotnego proxy.
- Odwrotny serwer proxy umożliwia uruchamianie wielu aplikacji na tym samym serwerze — jeśli na tym samym serwerze działa wiele aplikacji, nie mogą one jednocześnie „nasłuchiwać” na porcie 80 lub 433. Odwrotny serwer proxy można go skonfigurować aby w razie potrzeby przekierować ruch do poszczególnych aplikacji.
- Równoważenie obciążenia — jeśli masz wiele serwerów, na których działa ta sama aplikacja, możesz użyć odwrotnego proxy, aby równomiernie rozprowadzić ruch na każdym serwerze.
- Zapora sieciowa aplikacji internetowych — możesz użyć odwrotnego proxy do ukrycia aplikacji, a także do filtrowania adresów IP spamu lub ochrony przed atakiem DDOS .
- Łatwe rejestrowanie i audytowanie — ponieważ cały ruch przychodzący jest zarządzany przez odwrotne proxy, łatwiej jest rejestrować i monitorować przepływy ruchu.
Skonfiguruj Nginx jako odwrotne proxy
Aby skonfigurować Nginx jako odwrotne proxy, w artykule zostanie użyty parametr proxy_pass w pliku konfiguracyjnym Nginx.
Uwaga : w tym samouczku założono, że masz pewną wiedzę na temat Nginx oraz że zainstalowałeś i skonfigurowałeś Nginx na swoim serwerze.
W większości przypadków Nginx będzie serwerem front-end, „nasłuchującym” na porcie 80 (HTTP) lub 443 (HTTPS) w poszukiwaniu przychodzących żądań. Ponieważ na porcie 80 lub 443 może „nasłuchiwać” tylko jedna usługa, Twoja aplikacja będzie musiała „nasłuchiwać” na innym porcie, np. porcie 8081. Najprostsza konfiguracja będzie wyglądać następująco:
server {
listen 80;
listen [::]:80;
server_name myapp.com;
location / {
proxy_pass http://localhost:8081/;
}
}
Oznacza to, że wszystkie żądania kierowane do myapp.com na porcie 80 będą przekierowywane na port 8081.
Zaawansowane ustawienia
Oprócz dyrektywy proxy_pass istnieje kilka innych dyrektyw, których można użyć do bardziej zaawansowanej konfiguracji .
- proxy_set_header — pozwala ustawić nagłówek wysyłany do aplikacji działającej w tle. Na przykład spójrz na następującą konfigurację:
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
Możesz ustawić niezbędne nagłówki proxy, które mają być przekazywane do aplikacji, podać adres IP żądania i adres zdalny, a następnie przesłać poprawną treść do żądającej witryny internetowej.
- limit czasu proxy — pozwala ustawić wartość limitu czasu dla wysyłania i odbierania żądań proxy. Na przykład:
proxy_connect_timeout 90;
proxy_send_timeout 90;
proxy_read_timeout 90;
- proxy_buffers — pozwala Nginxowi tymczasowo wstrzymać odpowiedź serwera proxy i wysłać ją do serwera żądającego dopiero po zakończeniu odpowiadania przez serwer proxy. Na przykład:
proxy_buffers 32 4k;
Jeśli Twoja aplikacja wysyła dużą liczbę plików, możesz wyłączyć proxy_buffers:
proxy_buffering off;
Jak widać, Nginx jest serwerem odwrotnego proxy, który ma wiele zastosowań. Największą zaletą jest to, że jest prosty w konfiguracji, łatwy w użyciu, a mimo to umożliwia skalowanie w bardziej złożonych scenariuszach. Więcej szczegółów można znaleźć w dokumentacji modułu proxy Nginx (pod adresem https://nginx.org/en/docs/http/ngx_http_proxy_module.html) lub przykładach konfiguracji (na stronie https://www.nginx.com/resources/wiki /start/tematy/przykłady/pełny/).
Mam nadzieję, że odniesiesz sukces.