Jak sprawić, by serwer Nginx nasłuchiwał na wielu portach?
Nginx to wszechstronny serwer WWW i odwrotny serwer proxy, który można skonfigurować do nasłuchiwania na wielu portach, dzięki czemu nadaje się do obsługi różnych stron internetowych, aplikacji lub usług z tego samego serwera. Konfiguracja Nginx do nasłuchiwania na wielu portach może być przydatna do serwowania różnych treści na różnych portach lub do obsługi usług takich jak HTTP (port 80) i HTTPS (port 443). Ten przewodnik pokaże ci, jak skonfigurować Nginx do nasłuchiwania na wielu portach.
Wymagania wstępne
- Serwer z zainstalowanym i uruchomionym Nginx.
- Dostęp root lub sudo do modyfikacji plików konfiguracyjnych Nginx.
- Podstawowa znajomość plików konfiguracyjnych Nginx (nginx.conf i pliki konfiguracyjne specyficzne dla witryny).
Przegląd podstawowej konfiguracji Nginx
Pliki konfiguracyjne Nginx znajdują się zwykle w /etc/nginx/nginx.conf lub w /etc/nginx/sites-available/ dla określonych konfiguracji witryn, w zależności od dystrybucji Linuksa. Główną dyrektywą nasłuchiwania na porcie jest listen, która określa adres IP i port, na którym Nginx powinien nasłuchiwać.
Krok 1: Otwórz plik konfiguracyjny Nginx
Aby skonfigurować Nginx do nasłuchiwania na wielu portach, należy edytować plik konfiguracyjny Nginx. Otwórz plik za pomocą preferowanego edytora tekstu:
sudo nano /etc/nginx/nginx.conf
Lub, jeśli edytujesz konkretną konfigurację witryny:
sudo nano /etc/nginx/sites-available/example.conf
Krok 2: Dodanie wielu dyrektyw nasłuchiwania
Aby Nginx nasłuchiwał na wielu portach, można dodać wiele dyrektyw nasłuchiwania w bloku serwera. Oto przykład bloku serwera nasłuchującego na portach 80 i 8080:
server {
listen 80;
listen 8080;
server_name example.com;
root /var/www/html;
index index.html;
location / {
try_files $uri $uri/ =404;
}
}
W tej konfiguracji:
- listen 80; instruuje Nginx, aby nasłuchiwał żądań HTTP na porcie 80.
- listen 8080; nakazuje Nginx nasłuchiwanie żądań HTTP na porcie 8080.
Oznacza to, że żądania kierowane do http://example.com:80 i http://example.com:8080 będą obsługiwane przez ten blok serwera.
Krok 3: Konfiguracja HTTPS z wieloma portami
Jeśli chcesz włączyć HTTPS na innym porcie (np. 8443), możesz skonfigurować go w następujący sposób:
server {
listen 443 ssl;
listen 8443 ssl;
server_name example.com;
ssl_certificate /etc/nginx/ssl/example.com.crt;
ssl_certificate_key /etc/nginx/ssl/example.com.key; root /var/www/html;
index index.html;
location / {
try_files $uri $uri/ =404;
}
}
W tej konfiguracji:
- listen 443 ssl; sprawia, że Nginx nasłuchuje żądań HTTPS na domyślnym porcie 443.
- listen 8443 ssl; sprawia, że Nginx nasłuchuje żądań HTTPS na porcie 8443.
- Certyfikat SSL i ścieżki klucza (ssl_certificate i ssl_certificate_key) są używane do włączenia HTTPS.
Krok 4: Weryfikacja konfiguracji
Po wprowadzeniu zmian ważne jest, aby zweryfikować konfigurację Nginx pod kątem błędów składni przed zastosowaniem zmian. Uruchom:
sudo nginx -t
Jeśli wyjście mówi, że składnia jest w porządku, konfiguracja jest poprawna.
Krok 5: Uruchom ponownie Nginx
Aby zastosować zmiany, uruchom ponownie Nginx:
sudo systemctl restart nginx
Lub, jeśli system korzysta z usługi:
sudo service nginx restart
Krok 6: Testowanie konfiguracji
Aby sprawdzić, czy Nginx poprawnie nasłuchuje na wielu portach:
- Check Listening Ports: Użyj netstat lub ss, aby sprawdzić, czy Nginx nasłuchuje na określonych portach:
sudo netstat -tuln | grep nginx
lub:sudo ss -tuln | grep nginx
Spowoduje to wyświetlenie listy portów, na których nasłuchuje Nginx. Powinieneś zobaczyć wpisy dla portów 80, 8080, 443 i 8443. - Uzyskaj dostęp do serwera: Otwórz przeglądarkę internetową i spróbuj uzyskać dostęp do serwera przy użyciu różnych portów:
- http://example.com
- http://example.com:8080
- https://example.com
- https://example.com:8443
Jeśli konfiguracja została przeprowadzona prawidłowo, powinna zostać wyświetlona ta sama zawartość.
Zaawansowane: Ustawianie różnych treści dla różnych portów
Można skonfigurować różną zawartość, która będzie serwowana w zależności od portu. Na przykład serwowanie różnych katalogów głównych dla każdego portu:
server {
listen 80;
server_name example.com;
root /var/www/html80;
index index.html; location / {
try_files $uri $uri/ =404;
}
}
server {
listen 8080;
server_name example.com;
root /var/www/html8080;
index index.html; location / {
try_files $uri $uri/ =404;
}
}
W tym przykładzie:
- Żądania do http://example.com (port 80) będą obsługiwać zawartość z /var/www/html80.
- Żądania na http://example.com:8080 będą obsługiwać zawartość z /var/www/html8080.
Wnioski
Skonfigurowanie Nginx do nasłuchiwania na wielu portach pozwala na obsługę różnych usług, obsługę niestandardowych konfiguracji lub zapewnienie elastyczności w architekturze sieci. Niezależnie od tego, czy potrzebujesz Nginx do obsługi wielu portów HTTP i HTTPS, czy też kierujesz różne porty do różnych treści, dyrektywa nasłuchiwania Nginx ułatwia konfigurację. Pamiętaj tylko, aby zweryfikować konfiguracje, ponownie uruchomić Nginx i przetestować każdy port, aby upewnić się, że wszystko działa zgodnie z oczekiwaniami.