Nginx to potężny serwer WWW znany z wysokiej wydajności i niskiego zużycia zasobów. Pierwotnie zaprojektowany do obsługi problemu C10k, doskonale radzi sobie z obsługą treści statycznych, równoważeniem obciążenia i odwrotnym proxy. Połączenie Nginxa z Debianem, znanym ze stabilności i bezpieczeństwa, skutkuje solidnym i niezawodnym środowiskiem serwerowym.
Kluczowe cechy Nginxa:
- Wysoka wydajność: Skutecznie obsługuje wiele jednoczesnych połączeń.
- Niskie wykorzystanie zasobów: Zoptymalizowany do pracy przy minimalnej ilości pamięci i procesora.
- Równoważenie obciążenia: Rozdziela ruch na wiele serwerów w celu poprawy wydajności.
- Odwrotne proxy: Płynnie przekazuje żądania klientów do serwerów zaplecza.
- Obsługa treści statycznych: Szybko i skutecznie obsługuje pliki statyczne.
- Funkcjonalność związana z bezpieczeństwem: Obsługuje SSL/TLS dla szyfrowanej komunikacji.
- Elastyczność: Obsługuje protokoły takie jak HTTP, HTTPS, SMTP, POP3 i IMAP.
Korzyści z połączenia Nginx z Debianem:
- Stabilność: Reputacja Debiana w zakresie stabilności gwarantuje, że Twój serwer pozostanie niezawodny.
- Bezpieczeństwo: Solidne środki bezpieczeństwa Debiana chronią Twój serwer Nginx przed lukami w zabezpieczeniach.
- Łatwość użycia: System zarządzania pakietami Debiana upraszcza instalację i konserwację Nginx.
- Społeczność: Nginx i Debian mają silne społeczności zapewniające szerokie zasoby i wsparcie.
Przechodząc do konfiguracji, przekonasz się, że stabilność Debiana doskonale łączy się z wydajnością Nginx, tworząc idealne środowisko dla Twoich aplikacji internetowych. Zagłębmy się w kroki wymagane do zainstalowania i skonfigurowania Nginx na serwerze Debian.
Przygotowanie systemu przed instalacją Nginx
Przed zainstalowaniem Nginx upewnij się, że Twój system jest zaktualizowany. Zapobiega to potencjalnym konfliktom podczas instalacji i zmniejsza ryzyko problemów ze zgodnością i luk w zabezpieczeniach.
Aby zaktualizować pakiety systemowe, uruchom następujące polecenie:
sudo apt update && sudo apt upgrade
To polecenie pobiera listę dostępnych aktualizacji (poprzez apt update
), a następnie aktualizuje bieżące pakiety oprogramowania do ich najnowszych wersji (przy użyciu apt upgrade
).
Zainstaluj standard serwera internetowego NGINX
Domyślnie NGINX jest dostępny w repozytoriach Debiana. Dzięki temu proces instalacji jest prosty.
Uruchom następujące polecenie, aby zainstalować Nginx:
sudo apt install nginx
The apt install
polecenie informuje narzędzie do obsługi pakietów APT (część systemu Debian), aby zainstalowało pakiet NGINX.
Opcjonalnie: zainstaluj pełną wersję NGINX
NGINX oferuje nginx-full
wersja z dodatkowymi modułami, których nie ma w wersji standardowej. Jeśli potrzebujesz większej funkcjonalności, zainstaluj pełną wersję nginx:
sudo apt install nginx-full
Opcjonalnie: zainstaluj wersję NGINX-Extras
Aby uzyskać jeszcze szerszy zestaw funkcji, rozważ nginx-extras
wersja. Żeby zainstalować:
sudo apt install nginx-extras
Weryfikacja instalacji NGINX
Po instalacji upewnij się, że NGINX działa poprawnie.
Sprawdź status usługi NGINX za pomocą następujących poleceń:
systemctl status nginx
NGINX działa poprawnie, jeśli wyjście pokazuje „aktywny (działa)”. Jeśli nie, dane wyjściowe wyszczególnią błąd w celu rozwiązania problemu.
Jeśli NGINX nie jest włączone, użyj:
sudo systemctl enable nginx --now
Skonfiguruj zaporę sieciową UFW dla Nginx
UFW, czyli Uncomplicated Firewall, zapewnia łatwy w użyciu interfejs do zarządzania regułami zapory iptables. Nie jest on domyślnie instalowany w Debianie, ale można go pobrać z domyślnych repozytoriów. Jeśli Twój serwer ma dostęp publiczny, powinieneś skonfigurować reguły UFW dla bezpieczeństwa.
Zainstaluj zaporę sieciową UFW
Jeśli UFW nie jest jeszcze zainstalowany w Twoim systemie, możesz to zrobić, wykonując następujące polecenie:
sudo apt install ufw
Włącz zaporę UFW
Po zakończeniu instalacji możesz włączyć UFW, uruchamiając następującą komendę:
sudo ufw enable
Domyślne ustawienia UFW blokują wszystkie połączenia przychodzące i zezwalają na wszystkie połączenia wychodzące. Oznacza to, że zatrzymuje niechciany dostęp do systemu, ale pozwala systemowi dotrzeć do świata zewnętrznego.
Lista zainstalowanych aplikacji
UFW wykorzystuje profile aplikacji, które stanowią zestawy reguł dla konkretnych aplikacji. Aby zobaczyć zainstalowane aplikacje posiadające profile UFW, uruchom:
sudo ufw app list
Konfigurowanie reguł UFW dla NGINX
W zależności od potrzeb możesz skonfigurować UFW tak, aby zezwalał na połączenia NGINX za pośrednictwem protokołu HTTP (port 80), HTTPS (port 443) lub obu.
Tylko dla protokołu HTTP (port 80):
sudo ufw allow 'Nginx HTTP'
Tylko HTTPS (port 443):
sudo ufw allow 'Nginx HTTPS'
Zarówno HTTP, jak i HTTPS:
sudo ufw allow 'Nginx Full'
Weryfikacja reguł zapory sieciowej
Aby potwierdzić, że reguły działają, sprawdź aktywne reguły zapory sieciowej:
sudo ufw status
Testowanie konfiguracji NGINX
Po skonfigurowaniu UFW upewnij się, że widzisz stronę docelową NGINX. W przeglądarce przejdź do adresu IP swojego serwera:
http://your_server_ip
Lub w przypadku konfiguracji lokalnych:
http://localhost
Załóżmy, że widzisz domyślną stronę NGINX; Twoja konfiguracja działa. To kończy konfigurację zapory sieciowej dla NGINX w Debianie.
Twórz bloki serwerów NGINX
Podobnie jak wirtualne hosty Apache, bloki serwerów NGINX umożliwiają hostowanie wielu domen z jednego serwera. Każda domena ma swoje ustawienia konfiguracyjne. W tym przewodniku zastąp „example.com” rzeczywistą nazwą domeny.
Utwórz katalog dla swojej domeny
Skonfiguruj katalog dla swojej domeny. W tym katalogu będą przechowywane pliki Twojej witryny:
sudo mkdir -p /var/www/example.com/
Przypisz własność do katalogu Nginx
Przypisz własność katalogu do użytkownika i grupy „www-data”, z których zwykle korzysta NGINX:
sudo chown -R www-data:www-data /var/www/example.com/
Utwórz testową stronę HTML Nginx
Utwórz testową stronę HTML w katalogu swojej domeny, aby potwierdzić konfigurację NGINX:
sudo nano /var/www/example.com/index.html
Dodaj następujący kod HTML:
<html>
<head>
<title>Welcome to Example.com</title>
</head>
<body>
<h1>Success! The NGINX server block is working!</h1>
</body>
</html>
Po wklejeniu kodu do edytora nano naciśnij CTRL+O, aby zapisać zmiany, a następnie CTRL+X, aby wyjść z edytora.
Utwórz blok serwera NGINX dla strony testowej
Skonfiguruj blokadę serwera dla swojej witryny:
sudo nano /etc/nginx/sites-available/example.com.conf
Dodaj następującą konfigurację:
server {
listen 80;
listen [::]:80;
root /var/www/example.com/;
index index.html index.htm index.nginx-debian.html;
server_name example.com www.example.com;
location / {
try_files $uri $uri/ =404;
}
}
Ta konfiguracja mówi NGINX, aby nasłuchiwał połączeń przychodzących na porcie 80 w obu przypadkach example.com
I www.example.com
. Pamiętaj o wymianie root
dyrektywę ścieżką katalogu, którą utworzyłeś wcześniej.
Włącz blok serwera NGINX poprzez dowiązanie symboliczne
Włącz blok serwera, tworząc dowiązanie symboliczne z katalogu dostępnych witryn do katalogu obsługującego witryny:
sudo ln -s /etc/nginx/sites-available/example.com.conf /etc/nginx/sites-enabled/
Ostateczna konfiguracja i uruchomienie testowe
Na koniec zmodyfikujemy domyślny plik konfiguracyjny NGINX i przeprowadzimy uruchomienie testowe, aby upewnić się, że wszystko działa zgodnie z oczekiwaniami.
Edycja pliku konfiguracyjnego NGINX
Otworzyć nginx.conf
plik:
sudo nano /etc/nginx/nginx.conf
Poszukaj linii server_names_hash_bucket_size 64;
w ciągu http {}
zablokuj i odkomentuj.
Ta dyrektywa umożliwia NGINX obsługę długich nazw domen i większej liczby nazw serwerów poprzez przydzielenie do tego celu większej ilości pamięci. Należy jednak zachować ostrożność, aby nie ustawić tej wartości zbyt wysoko, ponieważ może to spowodować zużycie większej ilości pamięci niż jest to potrzebne.
Zapisz zmiany i wyjdź z edytora, naciskając CTRL+O i CTRL+X.
Przetestuj swoją konfigurację NGINX
Zanim przystąpisz do ponownego uruchomienia NGINX, dobrą praktyką jest sprawdzenie, czy składnia konfiguracji jest poprawna. Uruchom następujące polecenie, aby zainicjować uruchomienie testowe:
sudo nginx -t
Jeśli konfiguracja jest poprawna, zobaczysz następujące dane wyjściowe:
nginx: składnia pliku konfiguracyjnego /etc/nginx/nginx.conf jest w porządku nginx: test pliku konfiguracyjnego /etc/nginx/nginx.conf zakończył się pomyślnie
Te komunikaty wskazują, że konfiguracja NGINX została pomyślnie sprawdzona.
Weryfikacja bloku serwera
Aby mieć pewność, że blokowanie serwera działa prawidłowo, otwórz swoją domenę w przeglądarce internetowej. Powinieneś zobaczyć stronę testową potwierdzającą, że blok serwera jest aktywny.
Dodatkowe polecenia Nginx
Zwiększanie bezpieczeństwa plików na serwerze internetowym
Bezpieczeństwo plików i folderów na serwerze internetowym jest najważniejsze. Unikaj zbyt liberalnych praw dostępu. Użyj tych poleceń, aby ustawić prawidłowe uprawnienia do wszystkich plików i katalogów w katalogu webroot.
Pamiętaj o wymianie /var/www/example.com/
ze ścieżką webroot:
sudo find /var/www/example.com/ -type d -exec chmod 755 "{}" \;
sudo find /var/www/example.com/ -type f -exec chmod 644 "{}" \;
Te polecenia ustawiają uprawnienia do odczytu i wykonywania katalogów oraz uprawnienia do odczytu i zapisu plików dla właściciela. Grupy i inne osoby uzyskują dostęp tylko do odczytu. Dostosuj te uprawnienia zgodnie z wymaganiami aplikacji.
Bezpieczeństwo Nginx z bezpłatnym certyfikatem SSL Let's Encrypt
Korzystanie z protokołu HTTPS zapewnia bezpieczeństwo serwera WWW. Let's Encrypt zapewnia bezpłatny certyfikat SSL. Zainstaluj pakiet certbot za pomocą:
sudo apt install python3-certbot-nginx
Następnie rozpocznij tworzenie certyfikatu:
sudo certbot --nginx --agree-tos --redirect --hsts --staple-ocsp --email you@example.com -d www.example.com
Zastąp swoim adresem e-mail i nazwą domeny. To polecenie konfiguruje protokół HTTPS z wymaganymi funkcjami zabezpieczeń.
Konfigurowanie automatycznego odnawiania certyfikatu
Certyfikaty Let's Encrypt obowiązują przez 90 dni. Skonfiguruj automatyczne odnawianie za pomocą skryptu Certbot. Przetestuj proces:
sudo certbot renew --dry-run
Jeśli się powiedzie, dodaj polecenie odnowienia do crontab:
sudo crontab -e
Dołącz tę linię, aby odnawiać codziennie o północy:
00 00 */1 * * /usr/sbin/certbot-auto renew
Dzienniki serwera Nginx
Monitoruj dzienniki serwera, aby zapewnić dobrze utrzymany serwer WWW. Domyślnie dzienniki znajdują się w pliku /var/log/nginx
. Wymień je za pomocą:
cd /var/log/nginx && ls -l
Najbardziej odpowiednie pliki dziennika to access.log
I error.log
. Aby monitorować logi w czasie rzeczywistym, użyj opcji tail -f
polecenie, po którym następuje ścieżka do dziennika:
tail -f /var/log/nginx/access.log
Zaktualizuj Nginxa
Przed aktualizacją serwera Nginx mądrze jest utworzyć kopię zapasową bieżących konfiguracji. Aby utworzyć kopię zapasową pliku main nginx.conf
plik, użyj następującego polecenia:
sudo cp /etc/nginx/nginx.conf /etc/nginx/nginx-backup.conf
W przypadkach, gdy w dużym stopniu dostosowałeś konfigurację Nginx, możesz chcieć wykonać kopię zapasową całego katalogu Nginx:
sudo cp -r /etc/nginx/ /etc/nginx-bkup
Mając bezpieczną kopię zapasową konfiguracji, możesz teraz przystąpić do aktualizacji Nginx:
sudo apt update
sudo apt upgrade
Regularne tworzenie kopii zapasowych konfiguracji jest dobrą praktyką, szczególnie w przypadku złożonych konfiguracji.
Usuń Nginxa
Jeśli nie potrzebujesz już Nginx na swoim serwerze, możesz go usunąć, wykonując poniższe kroki. Najpierw upewnij się, że usługa Nginx jest zatrzymana:
sudo systemctl disable nginx --now
Następnie całkowicie usuń pakiet Nginx:
sudo apt remove nginx
Nadal możesz znaleźć pozostałości konfiguracji Nginx w pliku /etc/nginx
informator. Aby je usunąć, użyj polecenia:
sudo rm -R /etc/nginx/
Pamiętaj, że spowoduje to usunięcie wszystkich niestandardowych plików konfiguracyjnych, dlatego przed kontynuowaniem tego kroku upewnij się, że masz kopię zapasową wszystkiego, czego potrzebujesz.
Skonfiguruj parametry rotacji dziennika w Nginx
Nginx domyślnie zawiera funkcję codziennej rotacji dzienników. Możesz jednak dostosować te ustawienia do swoich potrzeb.
Uzyskaj dostęp do pliku konfiguracyjnego w celu rotacji dziennika
Aby zmodyfikować ustawienia rotacji logów, musisz uzyskać dostęp do pliku konfiguracyjnego. Oto jak możesz go otworzyć za pomocą edytora tekstu nano:
sudo nano /etc/nginx/logrotate.d/nginx
Po otwarciu pliku zobaczysz zawartość podobną do poniższej. Dostosuj dyrektywy w tym pliku, aby dopasować je do potrzeb przechowywania i rotacji dzienników, głównie jeśli używasz narzędzi monitorujących, takich jak Fail2ban.
Przykładowy plik konfiguracyjny rotacji dziennika
/var/log/nginx/*.log {
daily
missingok
rotate 14
compress
delaycompress
notifempty
create 0640 www-data adm
sharedscripts
prerotate
if [ -d /etc/logrotate.d/httpd-prerotate ]; then \
run-parts /etc/logrotate.d/httpd-prerotate; \
fi \
endscript
postrotate
invoke-rc.d nginx rotate >/dev/null 2>&1
endscript
}
Zrozumienie podstawowych parametrów konfiguracyjnych
W ramach tej konfiguracji administratorzy systemu zazwyczaj skupiają się na dwóch głównych ustawieniach:
- Codziennie: To ustawienie określa częstotliwość rotacji kłód. Domyślną wartością jest „codziennie”, możesz ją zmienić na „co tydzień” lub „co miesiąc”. Jednak codzienne rotacje zazwyczaj upraszczają zarządzanie dziennikami.
- Obróć 14: Ta liczba informuje system, ile plików dziennika należy zachować. Na przykład ustawienie „14” powoduje zachowanie 14 najnowszych dzienników. Jeśli chcesz przechowywać dzienniki tylko przez tydzień, zmień tę liczbę na „7”.
Chociaż Nginx pozwala modyfikować inne ustawienia, zawsze wprowadzaj zmiany ostrożnie. Zmiana ustawień bez zrozumienia ich wpływu może spowodować nieoczekiwane rezultaty. Upewnij się, że modyfikujesz te ustawienia tak, aby odpowiadały Twoim potrzebom, nie powodując niezamierzonych problemów.
Pamiętaj, że nie ma jednego uniwersalnego podejścia do zarządzania dziennikami. Przed wprowadzeniem zmian zawsze oceniaj swoje specyficzne środowisko i wymagania.
Zamykające myśli
W tym przewodniku omówiliśmy konfigurację Nginx na Debianie, obejmując instalację, konfigurację i podstawową optymalizację. Łącząc wydajność Nginx ze stabilnością Debiana, stworzyłeś solidny fundament dla swojego serwera WWW. Pamiętaj, aby aktualizować swój serwer i eksplorować dodatkowe moduły Nginx w celu zwiększenia funkcjonalności. Jeśli napotkasz jakiekolwiek problemy, silne społeczności wokół Debiana i Nginx zawsze będą świetnym źródłem informacji. Dziękujemy za śledzenie i miłego hostingu!