Zaoszczędź 15% na wszystkich usługach hostingowych

Sprawdź swoje umiejętności i zdobądź Rabat na dowolny plan hostingowy

Użyj kodu: Skills Rozpocznij
Sekcja
Administracja Linux

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 -y

To 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 -y

Instalacja Nginx:

sudo yum install nginx -y

To polecenie pobiera i instaluje Nginx wraz ze wszystkimi wymaganymi zależnościami. Po zakończeniu instalacji możesz zweryfikować zainstalowaną wersję za pomocą:

nginx -v

Powinieneś zobaczyć dane wyjściowe podobne do:

nginx version: nginx/1.20.x

Krok 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 nginx

Włącz Nginx do uruchamiania przy starcie:

sudo systemctl enable nginx

Sprawdź status usługi, aby potwierdzić, że jest uruchomiona:

sudo systemctl status nginx

Powinieneś 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=http

Zezwól na ruch HTTPS:

sudo firewall-cmd --permanent --add-service=https

Przeładuj zaporę, aby zastosować zmiany:

sudo firewall-cmd --reload

Sprawdź aktywne reguły:

sudo firewall-cmd --list-all

Powinieneś 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_ip

Powinieneś 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.conf

Dodaj 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:

DyrektywaOpis
listen 80Instruuje Nginx do nasłuchiwania połączeń przychodzących na porcie 80 (HTTP)
server_nameDefiniuje nazwy domen, na które odpowiada ten blok serwera
rootOkreśla katalog główny dokumentu, w którym przechowywane są pliki witryny
indexDefiniuje pliki domyślne, które Nginx będzie serwować, gdy żądany jest katalog
try_filesPróbuje serwować żądany URI jako plik, następnie jako katalog, i zwraca 404, jeśli żaden nie istnieje
access_log / error_logDefiniuje 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/html

Utwó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.html

Ustaw 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 -t

Pomyś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 successful

Jeś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 nginx

Alternatywnie, jeśli chcesz przeładować konfigurację bez przerywania aktywnych połączeń (zalecane dla środowisk produkcyjnych), użyj:

sudo systemctl reload nginx

Teraz 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 -y

Uzyskaj 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.com

Postępuj zgodnie z interaktywnymi monitami:

  1. Wpisz swój adres e-mail dla powiadomień o odnowieniu
  2. Zaakceptuj Warunki usługi Let’s Encrypt
  3. 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.conf aby uwzględnić dyrektywy SSL
  • Skonfiguruje przekierowanie z HTTP na HTTPS

Po zakończeniu zweryfikuj konfigurację HTTPS, odwiedzając:

https://example.com

Twoja 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-run

Pomyś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 -e

Dodaj 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/
  • Zdefiniuj unikalną dyrektywę server_name
  • Wskaż dyrektywę root do odpowiedniego katalogu głównego dokumentów
  • Uruchom sudo nginx -t i sudo systemctl reload nginx
  • Jeś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

    ProblemPrawdopodobna przyczynaRozwiązanie
    Nginx nie uruchamia sięPort 80/443 już w użyciuUruchom `sudo ss -tlnpgrep :80` aby zidentyfikować konfliktujący proces
    Błąd 403 ForbiddenNieprawidłowe uprawnienia do pliku lub kontekst SELinuxSprawdź chmod/chown i zastosuj chcon dla SELinux
    502 Bad GatewayBackend upstream (PHP-FPM, Node.js) nie działaSprawdź, 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 80Upewnij się, że port 80 jest otwarty i żaden inny proces go nie blokuje
    Zmiany nie wchodzą w życieKonfiguracja nie została przeładowanaUruchom 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.