Instalacja i konfiguracja Nginx na CentOS 7: Kompletny przewodnik krok po kroku
Nginx jest jednym z najpotężniejszych i najszerzej przyjętych serwerów internetowych open-source na świecie. Znany z wyjątkowej wydajności, niskiego zużycia pamięci i zdolności do obsługi tysięcy jednoczesnych połączeń, Nginx jest rozwiązaniem z wyboru do serwowania zawartości statycznej, działania jako odwrotny proxy i wykonywania równoważenia obciążenia w systemach rozproszonych.
Niezależnie od tego, czy prowadzisz osobisty blog, platformę e-commerce o wysokim ruchu, czy złożoną architekturę mikrousług, Nginx zapewnia szybkość i niezawodność, których oczekują Twoi użytkownicy. Ten kompleksowy przewodnik przeprowadzi Cię przez każdy krok instalacji, konfiguracji, zabezpieczania i optymalizacji Nginx na serwerze CentOS 7 — od przygotowania systemu do włączenia HTTPS z bezpłatnym certyfikatem SSL Let’s Encrypt.
> Wymagania wstępne: Serwer CentOS 7 z dostępem root lub sudo. Jeśli potrzebujesz niezawodnego, wysokowydajnego środowiska do nauki, rozważ zapoznanie się z VPS Hosting od AlexHost — zaprojektowany dla wymagających obciążeń z pełnym dostępem root i magazynem SSD.
Krok 1: Aktualizacja systemu
Przed zainstalowaniem nowego oprogramowania należy upewnić się, że system CentOS 7 jest w pełni zaktualizowany. Nieaktualne pakiety mogą wprowadzić luki w zabezpieczeniach i konflikty zależności, które komplikują proces instalacji.
Otwórz terminal i uruchom następujące polecenie:
sudo yum update -yTo polecenie aktualizuje wszystkie zainstalowane pakiety do ich najnowszych dostępnych wersji. Flaga -y automatycznie potwierdza wszystkie monity, czyniąc proces nieinteraktywnym. Pozwól aktualizacji na pełne ukończenie przed przystąpieniem do dalszych kroków.
Krok 2: Instalacja Nginx za pomocą YUM
Nginx nie jest dostępny w domyślnych repozytoriach CentOS 7. Musisz najpierw zainstalować repozytorium EPEL (Extra Packages for Enterprise Linux), które udostępnia szeroką gamę dodatkowych pakietów oprogramowania dla dystrybucji opartych na RHEL.
Instalacja repozytorium EPEL:
sudo yum install epel-release -yInstalacja Nginx:
sudo yum install nginx -yTo polecenie pobiera i instaluje Nginx wraz ze wszystkimi wymaganymi zależnościami. Po zakończeniu instalacji możesz zweryfikować zainstalowaną wersję za pomocą:
nginx -vPowinieneś zobaczyć dane wyjściowe podobne do:
nginx version: nginx/1.20.xKrok 3: Uruchomienie i włączenie usługi Nginx
Po zainstalowaniu Nginx musisz uruchomić usługę i skonfigurować ją tak, aby uruchamiała się automatycznie przy każdym restarcie serwera.
Uruchom usługę Nginx:
sudo systemctl start nginxWłącz Nginx do uruchamiania przy starcie:
sudo systemctl enable nginxSprawdź status usługi, aby potwierdzić, że jest uruchomiona:
sudo systemctl status nginxPowinieneś zobaczyć dane wyjściowe wskazujące, że usługa jest active (running):
● nginx.service - The nginx HTTP and reverse proxy server
Loaded: loaded (/usr/lib/systemd/system/nginx.service; enabled; ...)
Active: active (running) since ...Jeśli usługa nie uruchomi się, przejrzyj dzienniki błędów w /var/log/nginx/error.log w celu uzyskania informacji diagnostycznych.
Krok 4: Konfiguracja zapory
CentOS 7 używa firewalld jako domyślnego narzędzia do zarządzania zaporą. Domyślnie ruch HTTP (port 80) i HTTPS (port 443) jest blokowany. Musisz jawnie otworzyć te porty, aby umożliwić ruch sieciowy do serwera Nginx.
Zezwól na ruch HTTP:
sudo firewall-cmd --permanent --add-service=httpZezwól na ruch HTTPS:
sudo firewall-cmd --permanent --add-service=httpsPrzeładuj zaporę, aby zastosować zmiany:
sudo firewall-cmd --reloadSprawdź aktywne reguły:
sudo firewall-cmd --list-allPowinieneś zobaczyć zarówno http jak i https wymienione w sekcji services wyników. Jeśli Twój serwer znajduje się za zewnętrzną zaporą lub grupą bezpieczeństwa (powszechne u dostawców chmury), upewnij się, że te reguły są również zaktualizowane, aby zezwolić na ruch na portach 80 i 443.
Krok 5: Weryfikacja instalacji
Aby potwierdzić, że Nginx jest zainstalowany prawidłowo i serwuje zawartość, otwórz przeglądarkę internetową i przejdź do publicznego adresu IP serwera:
http://your_server_ipPowinieneś zobaczyć domyślną stronę powitalną Nginx, która wyświetla komunikat *"Welcome to nginx!"*. To potwierdza, że serwer WWW jest operacyjny i dostępny z Internetu.
Jeśli nie widzisz strony powitalnej, sprawdź ponownie następujące elementy:
- Usługa Nginx jest uruchomiona (
sudo systemctl status nginx) - Reguły zapory sieciowej są prawidłowo zastosowane
- Adres IP serwera jest prawidłowy
- Żadna inna usługa (taka jak Apache) nie zajmuje portu 80
Krok 6: Konfiguracja bloków serwera Nginx
Nginx używa bloków serwera (funkcjonalnie równoważnych wirtualnym hostom Apache) do definiowania sposobu obsługi żądań dla różnych domen lub subdomen. Każdy blok serwera jest zwykle przechowywany jako osobny plik konfiguracyjny w katalogu /etc/nginx/conf.d/.
Główny plik konfiguracyjny Nginx znajduje się w /etc/nginx/nginx.conf. Zawiera dyrektywę, która automatycznie ładuje wszystkie pliki .conf z katalogu conf.d, utrzymując konfigurację modułową i łatwą w zarządzaniu.
Krok 6a: Utwórz nowy plik konfiguracji bloku serwera
Utwórz nowy plik konfiguracyjny dla swojej domeny. Zastąp example.com swoją rzeczywistą nazwą domeny:
sudo nano /etc/nginx/conf.d/example.com.confDodaj następującą konfigurację bloku serwera:
server {
listen 80;
server_name example.com www.example.com;
root /var/www/example.com/html;
index index.html index.htm index.php;
# Logging
access_log /var/log/nginx/example.com.access.log;
error_log /var/log/nginx/example.com.error.log;
location / {
try_files $uri $uri/ =404;
}
# Deny access to hidden files
location ~ /. {
deny all;
}
}Wyjaśnienie kluczowych dyrektyw:
| Dyrektywa | Opis |
|---|---|
listen 80 | Instruuje Nginx do nasłuchiwania połączeń przychodzących na porcie 80 (HTTP) |
server_name | Definiuje nazwy domen, na które odpowiada ten blok serwera |
root | Określa katalog główny dokumentu, w którym przechowywane są pliki witryny |
index | Definiuje pliki domyślne, które Nginx będzie serwować, gdy żądany jest katalog |
try_files | Próbuje serwować żądany URI jako plik, następnie jako katalog, i zwraca 404, jeśli żaden nie istnieje |
access_log / error_log | Definiuje osobne pliki dziennika dla tego wirtualnego hosta w celu ułatwienia debugowania |
Zapisz plik i wyjdź z edytora (Ctrl+X, następnie Y, następnie Enter w nano).
Krok 7: Utwórz katalog główny dokumentów i plik testowy
Utwórz katalog główny dokumentów, który zdefiniowałeś w konfiguracji bloku serwera:
sudo mkdir -p /var/www/example.com/htmlUtwórz prosty plik index.html aby sprawdzić, czy blok serwera działa prawidłowo:
echo "<h1>Welcome to Example.com — Powered by Nginx on CentOS 7!</h1>" | sudo tee /var/www/example.com/html/index.htmlUstaw prawidłową własność i uprawnienia, aby Nginx mógł czytać pliki:
sudo chown -R nginx:nginx /var/www/example.com/
sudo chmod -R 755 /var/www/example.com/> Uwaga dotycząca SELinux: CentOS 7 jest dostarczany z włączonym SELinux domyślnie. Jeśli Nginx nie może czytać twoich plików internetowych nawet przy prawidłowych uprawnieniach, może być konieczne zastosowanie odpowiedniego kontekstu SELinux:
> “`bash
> sudo chcon -Rt httpd_sys_content_t /var/www/example.com/
> “`
Krok 8: Testowanie konfiguracji Nginx
Przed zrestartowaniem Nginx w celu zastosowania nowej konfiguracji zawsze przetestuj błędy składni. Błędnie skonfigurowany plik może wyłączyć cały serwer internetowy.
Uruchom test konfiguracji:
sudo nginx -tPomyślny test daje następujące wyniki:
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successfulJeśli zostaną zgłoszone błędy, dokładnie przejrzyj wskazane numery linii w plikach konfiguracyjnych i popraw wszelkie problemy przed kontynuowaniem.
Zrestartuj Nginx, aby zastosować zmiany:
sudo systemctl restart nginxAlternatywnie, jeśli chcesz przeładować konfigurację bez przerywania aktywnych połączeń (zalecane dla środowisk produkcyjnych), użyj:
sudo systemctl reload nginxTeraz przejdź do swojej domeny w przeglądarce. Powinieneś zobaczyć swoją niestandardową stronę index.html.
Krok 9: Skonfiguruj HTTPS za pomocą Let’s Encrypt
Uruchamianie witryny przez zwykły HTTP naraża użytkowników na potencjalne podsłuchiwanie i ataki typu man-in-the-middle. Zabezpieczenie witryny za pomocą HTTPS nie jest już opcjonalne — jest to fundamentalne wymaganie dla zaufania użytkowników, integralności danych i rankingu w wyszukiwarkach.
Let’s Encrypt zapewnia bezpłatne, zautomatyzowane i zaufane certyfikaty SSL/TLS. Możesz również zapoznać się z premium Certyfikatami SSL od AlexHost dla opcji z rozszerzoną walidacją i walidacją organizacji, które oferują wyższe poziomy zaufania dla witryn biznesowych.
Zainstaluj Certbot i wtyczkę Nginx
sudo yum install certbot python2-certbot-nginx -yUzyskaj i zainstaluj certyfikat SSL
Uruchom Certbot z wtyczką --nginx, która automatycznie modyfikuje konfigurację Nginx w celu włączenia HTTPS:
sudo certbot --nginx -d example.com -d www.example.comPostępuj zgodnie z interaktywnymi monitami:
- Wpisz swój adres e-mail dla powiadomień o odnowieniu
- Zaakceptuj Warunki usługi Let’s Encrypt
- Wybierz, czy chcesz przekierować ruch HTTP na HTTPS (zdecydowanie zalecane — wybierz opcję 2)
Certbot automatycznie:
- Uzyska podpisany certyfikat od Let’s Encrypt
- Zmodyfikuje
/etc/nginx/conf.d/example.com.confaby uwzględnić dyrektywy SSL - Skonfiguruje przekierowanie z HTTP na HTTPS
Po zakończeniu zweryfikuj konfigurację HTTPS, odwiedzając:
https://example.comTwoja przeglądarka powinna wyświetlić ikonę kłódki, potwierdzającą, że połączenie jest szyfrowane.
Krok 10: Automatyzacja Odnowienia Certyfikatu
Certyfikaty Let's Encrypt są ważne przez 90 dni. Nieprzedłużenie ich przed wygaśnięciem spowoduje wyświetlenie ostrzeżeń bezpieczeństwa odwiedzającym Twoją witrynę, co poważnie wpłynie na zaufanie użytkowników i ruch.
Przetestuj Proces Odnowienia
Przed skonfigurowaniem automatyzacji sprawdź, czy proces odnowienia działa prawidłowo:
sudo certbot renew --dry-runPomyślny test potwierdzą, że automatyczne odnowienie będzie działać bez problemów.
Skonfiguruj Zadanie Cron dla Automatycznego Odnowienia
Otwórz crontab roota:
sudo crontab -eDodaj następujący wiersz, aby sprawdzać i odnawniać certyfikaty dwa razy dziennie (zalecana częstotliwość):
0 0,12 * * * /usr/bin/certbot renew --quiet --post-hook "systemctl reload nginx"Wyjaśnienie harmonogramu cron:
0 0,12 * * * — Uruchamia się o północy i w południe każdego dnia
--quiet — Pomija dane wyjściowe, chyba że wystąpi błąd
--post-hook "systemctl reload nginx" — Przeładowuje Nginx po pomyślnym odnowieniu, aby zastosować nowy certyfikat bez przestojów
Zapisz i wyjdź z edytora crontab. Twoje certyfikaty SSL będą teraz automatycznie odnawiane, utrzymując Twoją witrynę w bezpiecznym stanie bez żadnej ręcznej interwencji.
Wskazówki optymalizacji wydajności Nginx na CentOS 7
Po ukończeniu podstawowej konfiguracji rozważ te ulepszenia konfiguracji, aby zmaksymalizować wydajność Nginx:
Włącz kompresję Gzip
Dodaj poniższe do nginx.conf w bloku http {}, aby zmniejszyć rozmiar odpowiedzi wysyłanych do klientów:
gzip on;
gzip_vary on;
gzip_min_length 1024;
gzip_proxied expired no-cache no-store private auth;
gzip_types text/plain text/css text/xml text/javascript application/javascript application/xml+rss application/json;
Skonfiguruj buforowanie przeglądarki
Dodaj nagłówki cache-control dla zasobów statycznych, aby zmniejszyć obciążenie serwera i poprawić czasy ładowania strony:
location ~* .(jpg|jpeg|png|gif|ico|css|js|woff|woff2)$ {
expires 30d;
add_header Cache-Control "public, no-transform";
}
Dostrojenie procesów roboczych
W /etc/nginx/nginx.conf ustaw liczbę procesów roboczych na zgodną z liczbą rdzeni CPU serwera:
worker_processes auto;
worker_connections 1024;
> W przypadku aplikacji wymagających dużych zasobów lub stron internetowych o dużym ruchu rozważ uaktualnienie do Serwerów dedykowanych od AlexHost, które zapewniają gwarantowane zasoby CPU, RAM i pamięci masowej bez efektu hałaśliwego sąsiada.
Zarządzanie wieloma stronami internetowymi za pomocą Nginx
Jedną z największych zalet Nginx jest możliwość hostowania wielu stron internetowych na jednym serwerze za pośrednictwem bloków serwera. Dla każdej dodatkowej domeny wystarczy:
Utwórz nowy plik .conf w /etc/nginx/conf.d/server_nameroot do odpowiedniego katalogu głównego dokumentówsudo nginx -t i sudo systemctl reload nginxJeśli wolisz graficzny interfejs do zarządzania serwerem WWW, hostami wirtualnymi, bazami danych i kontami e-mail, rozważ VPS z cPanel — w pełni zarządzane rozwiązanie panelu sterowania, które upraszcza administrację serwerem bez poświęcania elastyczności.
Alternatywnie, zapoznaj się z pełną gamą paneli sterowania VPS dostępnych od AlexHost, w tym Plesk, DirectAdmin i inne opcje dostosowane do różnych przepływów pracy i preferencji technicznych.
Rozwiązywanie typowych problemów z Nginx na CentOS 7
| Problem | Prawdopodobna przyczyna | Rozwiązanie | |
|---|---|---|---|
| Nginx nie uruchamia się | Port 80/443 już w użyciu | Uruchom `sudo ss -tlnp | grep :80` aby zidentyfikować konfliktujący proces |
| Błąd 403 Forbidden | Nieprawidłowe uprawnienia do pliku lub kontekst SELinux | Sprawdź chmod/chown i zastosuj chcon dla SELinux | |
| 502 Bad Gateway | Backend upstream (PHP-FPM, Node.js) nie działa | Sprawdź, czy usługa backend jest aktywna i czy gniazdo/port jest prawidłowy | |
| Certyfikat SSL nie odnawia się | Certbot nie może powiązać się z portem 80 | Upewnij się, że port 80 jest otwarty i żaden inny proces go nie blokuje | |
| Zmiany nie wchodzą w życie | Konfiguracja nie została przeładowana | Uruchom sudo systemctl reload nginx po każdej zmianie konfiguracji |
Podsumowanie
Pomyślnie zainstalowałeś, skonfigurowałeś i zabezpieczyłeś Nginx na CentOS 7. Twój serwer jest gotów do hostowania witryn z wysoką wydajnością, efektywnego obsługiwania jednoczesnych połączeń i serwowania treści przez szyfrowane połączenia HTTPS — wszystkie niezbędne cechy nowoczesnego, produkcyjnego środowiska sieciowego.
Oto podsumowanie tego, co zostało osiągnięte:
- ✅ Zaktualizowałeś system CentOS 7 i zainstalowałeś Nginx z repozytorium EPEL
- ✅ Uruchomiłeś i włączyłeś usługę Nginx do automatycznego uruchamiania przy starcie
- ✅ Skonfigurowałeś firewalld, aby zezwolić na ruch HTTP i HTTPS
- ✅ Utworzyłeś i skonfigurowałeś niestandardowy blok serwera dla domeny
- ✅ Ustawiłeś prawidłowe uprawnienia plików i konteksty SELinux dla katalogu głównego dokumentów
- ✅ Przetestowałeś konfigurację pod kątem błędów składni przed zastosowaniem zmian
- ✅ Zabezpieczyłeś witrynę bezpłatnym certyfikatem SSL Let's Encrypt za pośrednictwem Certbot
- ✅ Zautomatyzowałeś odnowienie certyfikatu za pomocą zadania cron
Utrzymanie bezpiecznego i wydajnego serwera sieciowego wymaga stałej uwagi. Regularnie aktualizuj Nginx, monitoruj dzienniki dostępu i błędów oraz przeglądaj konfigurację w miarę ewolucji wymagań Twojej witryny.
Jeśli szukasz solidnej podstawy hostingowej dla swoich projektów opartych na Nginx, AlexHost oferuje pełne spektrum rozwiązań — od Hostingu Współdzielonego na poziomie podstawowym dla mniejszych witryn po wysokowydajne VPS i dedykowaną infrastrukturę dla wymagających aplikacji. Każdy plan wspierany jest sprzętem klasy enterprise, wsparciem technicznym 24/7 i zaangażowaniem w niezawodność i bezpieczeństwo.
na wszystkich usługach hostingowych