proxy_pass
w Nginx jest dyrektywą używaną do przekierowywania (proxy) żądań HTTP przychodzących do serwera Nginx na inny serwer, który faktycznie przetwarza te żądania. Nginx działa jako serwer pośredniczący, który odbiera żądanie od klienta, a następnie przekazuje je do innego serwera (zwanego serwerem docelowym lub backendem). Ostatecznie odpowiedź zwrócona przez ten serwer jest przesyłana z powrotem do klienta przez Nginx.
Przykład działania proxy_pass
Załóżmy, że masz aplikację działającą na lokalnym serwerze na porcie 8080 (np. aplikacja webowa uruchomiona na localhost:8080
), ale chcesz, aby użytkownicy mieli dostęp do niej poprzez domenę example.com
pod adresem example.com/app
.
Dzięki proxy_pass
, możesz skonfigurować Nginx, aby odbierał żądania skierowane na example.com/app
i przekazywał je do aplikacji na porcie 8080. Oto, jak może wyglądać konfiguracja:
server {
listen 80;
server_name example.com;
location /app {
proxy_pass http://localhost:8080;
}
}
Dołącz do szkolenia "Docker w 90 minut!"
Podczas szkolenia dowiesz się wszystkiego, co potrzebne, by wystartować z konteneryzacją. Poznasz podstawową obsługę Dockera. Nauczysz się 17 komend, które musi znać każda osoba działająca z kontenerami, Dockerem i Kubernetesem.
Widzimy się 12 września o 13:00!
Chcesz wziąć udział w szkoleniu? Zapisy na stronie: https://asdevops.pl/s42/
Co się dzieje krok po kroku:
- Klient wysyła żądanie do Nginx, np.
http://example.com/app
. - Nginx odbiera to żądanie.
- Nginx analizuje konfigurację i znajduje dopasowaną regułę
location
dla/app
. - Następnie Nginx wykorzystuje dyrektywę
proxy_pass
, aby przekazać żądanie do serwera aplikacji działającego nahttp://localhost:8080
. - Serwer aplikacji przetwarza to żądanie i generuje odpowiedź.
- Nginx odbiera odpowiedź od serwera aplikacji.
- Nginx przesyła tę odpowiedź z powrotem do klienta, który wysłał pierwotne żądanie.
Zalety korzystania z proxy_pass
:
- Skalowalność: Możesz rozdzielać ruch pomiędzy różne serwery backendowe, co pozwala na lepsze zarządzanie obciążeniem.
- Bezpieczeństwo: Serwery backendowe mogą być ukryte za Nginx, co utrudnia bezpośredni dostęp do nich z zewnątrz.
- Centralizacja: Możesz zarządzać ruchem i konfiguracją aplikacji z jednego miejsca, co ułatwia zarządzanie wieloma serwisami.
- Zarządzanie SSL/TLS: Możesz skonfigurować Nginx, aby obsługiwał szyfrowanie SSL/TLS, nawet jeśli serwer backendowy tego nie obsługuje.
Dyrektywa proxy_pass
jest podstawowym narzędziem w Nginx do budowy rozwiązań takich jak reverse proxy, load balancing, a nawet cache’owanie treści.
Ćwiczenie
1. Zainstaluj Nginx (jeśli nie jest już zainstalowany)
sudo apt-get update
sudo apt-get install nginx
2. Przejdź do katalogu sites-available
To jest miejsce, w którym Nginx przechowuje konfiguracje dla różnych stron.
cd /etc/nginx/sites-available
3. Utwórz lub edytuj plik konfiguracyjny dla swojej strony
Załóżmy, że Twoja strona nazywa się moja-strona
. Otwórz plik konfiguracyjny za pomocą edytora tekstu (np. nano):
sudo nano moja-strona
4. Dodaj konfigurację location
do proxy pass
W pliku konfiguracyjnym dodaj następującą sekcję location
, która przekaże żądania skierowane na /cmk
do aplikacji działającej na localhost:8080
.
location /cmk {
proxy_pass http://localhost:8080;
}
5. Zapisz zmiany i zamknij edytor
Aby zapisać zmiany w nano, naciśnij CTRL + O
, a następnie Enter
. Aby zamknąć edytor, naciśnij CTRL + X
.
6. Zrestartuj Nginx, aby zastosować zmiany
Po dokonaniu zmian w konfiguracji, musisz przeładować Nginx, aby nowe ustawienia zaczęły obowiązywać:
sudo nginx -s reload
7. Dostęp do aplikacji
Teraz, po wpisaniu odpowiedniego adresu URL (np. http://twojadomena/cmk
), Nginx przekieruje ruch do aplikacji działającej na porcie 8080.
8. Sprawdzenie logów kontenera Docker
Jeśli używasz Docker’a do uruchomienia aplikacji, możesz sprawdzić logi kontenera, aby uzyskać np. hasło do aplikacji checkmk
:
sudo docker container logs monitoring
Dodanie Nowego Proxy Pass
Jeśli chcesz dodać kolejną konfigurację, np. przekierowanie ruchu skierowanego na /grupa
do zewnętrznej strony https://grupadm.pl/
, postępuj zgodnie z poniższymi krokami.
1. Edytuj plik konfiguracyjny moja-strona
Otwórz ponownie plik konfiguracyjny:
sudo nano moja-strona
2. Dodaj nową sekcję location
W pliku konfiguracyjnym dodaj następującą sekcję:
location /grupa {
proxy_pass https://grupadm.pl/;
}
3. Zapisz zmiany i zamknij edytor
Ponownie zapisz zmiany (CTRL + O, Enter) i zamknij edytor (CTRL + X).
4. Zrestartuj Nginx, aby zastosować zmiany
sudo nginx -s reload
5. Sprawdzenie
Po wpisaniu odpowiedniego adresu URL (np. https://kursngninx.pl/grupa
), Nginx przekieruje ruch do strony https://grupadm.pl/
.
Podsumowanie
Ten skrypt umożliwia konfigurację Nginx w celu przekierowania ruchu za pomocą proxy_pass
. Dzięki temu możesz przekierowywać żądania na różne aplikacje lub zewnętrzne serwisy w zależności od ścieżki URL.