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 Bezpieczeństwo Linux

Jak zainstalować Nginx z obsługą HTTP/2 na Ubuntu (Kompletny przewodnik)

Nginx jest jednym z najszerzej wdrażanych serwerów internetowych na świecie, znany z wyjątkowej wydajności, niskiego zużycia pamięci i zdolności do obsługi tysięcy równoczesnych połączeń. W połączeniu z HTTP/2, Nginx staje się jeszcze bardziej potężną platformą — umożliwiającą multipleksowane żądania, kompresję nagłówków, server push i dramatycznie skrócone czasy ładowania stron.

Ten kompleksowy przewodnik przeprowadzi Cię przez każdy krok wymagany do zainstalowania Nginx z pełną obsługą HTTP/2 na Ubuntu 20.04 i Ubuntu 22.04 LTS, od początkowej konfiguracji poprzez konfigurację SSL, optymalizację bloków serwera i weryfikację na żywo.

> Dla kogo jest ten przewodnik? Administratorzy systemów, deweloperzy i właściciele stron internetowych, którzy chcą zmaksymalizować wydajność sieci na serwerze Linux. Jeśli prowadzisz swoją stronę na planie VPS Hosting lub Dedicated Server, ten samouczek ma bezpośrednie zastosowanie do Twojego środowiska.

Czym jest HTTP/2 i dlaczego ma to znaczenie?

HTTP/2 to druga główna wersja protokołu Hypertext Transfer Protocol, standaryzowana w RFC 7540. Został zaprojektowany w celu rozwiązania ograniczeń wydajności HTTP/1.1, który jest używany od 1997 roku.

Kluczowe zalety HTTP/2 w porównaniu z HTTP/1.1:

FunkcjaHTTP/1.1HTTP/2
MultipleksowanieJedno żądanie na połączenieWiele jednoczesnych żądań
Kompresja nagłówkówNagłówki w postaci zwykłego tekstuKompresja HPACK
Server pushNieobsługiwaneObsługiwane
Protokół binarnyOparty na tekścieBinarne ramki
Ponowne użycie połączeniaOgraniczoneW pełni trwałe
OpóźnienieWyższeZnacznie zmniejszone

Dla właścicieli stron internetowych włączenie HTTP/2 przekłada się bezpośrednio na szybsze ładowanie stron, lepsze wyniki Core Web Vitals i poprawę rankingów SEO — ponieważ Google wykorzystuje szybkość strony jako sygnał rankingowy.

> Ważne: HTTP/2 wymaga HTTPS (TLS/SSL). Nie możesz uruchamiać HTTP/2 przez nieszyfrowane połączenie w żadnej nowoczesnej przeglądarce. Dlatego uzyskanie certyfikatu SSL jest obowiązkowym krokiem w tym przewodniku. Jeśli potrzebujesz zaufanego certyfikatu dla swojej domeny, AlexHost oferuje Certyfikaty SSL dla wszystkich przypadków użycia.

Wymagania wstępne

Przed rozpoczęciem upewnij się, że masz na miejscu następujące elementy:

  • Serwer z systemem Ubuntu 20.04 LTS lub Ubuntu 22.04 LTS (kroki są prawie identyczne dla obu)
  • Użytkownik bez uprawnień root z sudo uprawnieniami lub bezpośredni dostęp root
  • Zarejestrowaną nazwę domeny wskazującą na adres IP serwera za pomocą rekordu A
  • Porty 80 i 443 otwarte w zaporze (UFW lub iptables)
  • Podstawową znajomość wiersza poleceń Linux

Jeśli nie masz jeszcze domeny, możesz zarejestrować ją bezpośrednio za pośrednictwem Rejestracji Domen AlexHost i wskazać ją na swój serwer w ciągu kilku minut.

Krok 1 — Aktualizacja indeksu pakietów systemowych

Zawsze zacznij od odświeżenia indeksu pakietów, aby upewnić się, że instalujesz najnowsze dostępne wersje całego oprogramowania:

sudo apt update && sudo apt upgrade -y

To polecenie aktualizuje lokalną listę pakietów i uaktualnia wszystkie przestarzałe pakiety już zainstalowane w systemie.

Krok 2 — Instalacja Nginx

Instalacja pakietu Nginx

Domyślne repozytoria Ubuntu zawierają stabilną wersję Nginx. Zainstaluj ją za pomocą:

sudo apt install nginx -y

Uruchomienie usługi Nginx

Po zainstalowaniu uruchom usługę Nginx natychmiast:

sudo systemctl start nginx

Włączenie automatycznego uruchamiania Nginx przy starcie systemu

Upewnij się, że Nginx uruchamia się automatycznie za każdym razem, gdy serwer się restartuje:

sudo systemctl enable nginx

Weryfikacja, czy Nginx jest uruchomiony

Potwierdź, że usługa jest aktywna i uruchomiona:

sudo systemctl status nginx

Powinieneś zobaczyć dane wyjściowe podobne do:

● nginx.service - A high performance web server and a reverse proxy server
     Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled)
     Active: active (running) since ...

Zezwolenie na Nginx przez zaporę sieciową

Jeśli UFW jest aktywny na Twoim serwerze, zezwól na ruch HTTP i HTTPS:

sudo ufw allow 'Nginx Full'
sudo ufw status

Nginx Full otwiera zarówno port 80 (HTTP), jak i port 443 (HTTPS), które są wymagane dla tej konfiguracji.

Krok 3 — Instalacja OpenSSL

HTTP/2 zależy od TLS, które z kolei zależy od OpenSSL. Zainstaluj go, aby upewnić się, że wszystkie zależności kryptograficzne są dostępne:

sudo apt install openssl -y

Sprawdź zainstalowaną wersję:

openssl version

Powinieneś zobaczyć dane wyjściowe takie jak OpenSSL 3.0.x lub podobne. Każda wersja powyżej 1.0.2 w pełni obsługuje zestawy szyfrów wymagane dla HTTP/2.

Krok 4 — Uzyskaj Bezpłatny Certyfikat SSL z Let’s Encrypt

Let’s Encrypt zapewnia bezpłatne, automatycznie odnawiane certyfikaty SSL/TLS zaufane przez wszystkie główne przeglądarki. Klient Certbot sprawia, że cały proces jest prosty.

Zainstaluj Certbot i wtyczkę Nginx

sudo apt install certbot python3-certbot-nginx -y

Poproś o Certyfikat SSL

Zastąp your_domain.com swoją rzeczywistą zarejestrowaną nazwą domeny:

sudo certbot --nginx -d your_domain.com -d www.your_domain.com

Certbot będzie:

  1. Weryfikować własność domeny poprzez wyzwanie HTTP
  2. Wydać certyfikat z Let’s Encrypt
  3. Automatycznie modyfikować konfigurację Nginx aby używać certyfikatu
  4. Skonfigurować przekierowania HTTPS z HTTP

Postępuj zgodnie z interaktywnymi monitami. Gdy zostaniesz poproszony, czy przekierować ruch HTTP na HTTPS, wybierz opcję 2 (Redirect) — to jest zalecany wybór.

Zweryfikuj Automatyczne Odnowienie Certyfikatu

Certyfikaty Let’s Encrypt wygasają po 90 dniach. Certbot instaluje zadanie cron lub timer systemd, aby je automatycznie odnawiać. Przetestuj proces odnowienia za pomocą próbnego uruchomienia:

sudo certbot renew --dry-run

Jeśli nie pojawią się żadne błędy, automatyczne odnowienie jest prawidłowo skonfigurowane.

> Wskazówka: W środowiskach produkcyjnych z wieloma domenami lub certyfikatami wildcard rozważ Serwer Dedykowany aby mieć pełną kontrolę nad infrastrukturą SSL.

Krok 5 — Konfiguracja Nginx dla HTTP/2

Teraz, gdy SSL jest na miejscu, musisz jawnie włączyć HTTP/2 w konfiguracji bloku serwera Nginx.

Otwórz plik konfiguracyjny Nginx

Domyślna konfiguracja witryny znajduje się w:

sudo nano /etc/nginx/sites-available/default

Jeśli utworzyłeś niestandardowy blok serwera dla swojej domeny (zalecane), otwórz zamiast tego ten plik:

sudo nano /etc/nginx/sites-available/your_domain.com

Zaktualizuj blok serwera, aby włączyć HTTP/2

Zlokalizuj dyrektywę listen 443 ssl;. Certbot dodał to automatycznie. Zmodyfikuj ją, aby uwzględnić http2:

server {
    listen 443 ssl http2;
    listen [::]:443 ssl http2;

    server_name your_domain.com www.your_domain.com;

    # SSL Certificate paths (set by Certbot)
    ssl_certificate /etc/letsencrypt/live/your_domain.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/your_domain.com/privkey.pem;
    include /etc/letsencrypt/options-ssl-nginx.conf;
    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;

    root /var/www/your_domain.com/html;
    index index.html index.htm index.php;

    location / {
        try_files $uri $uri/ =404;
    }
}

# HTTP to HTTPS redirect block
server {
    listen 80;
    listen [::]:80;
    server_name your_domain.com www.your_domain.com;
    return 301 https://$host$request_uri;
}

Krytyczna zmiana znajduje się w wierszu listen: dodanie http2 po ssl aktywuje protokół HTTP/2 dla tego hosta wirtualnego.

Zapisz i wyjdź

Naciśnij CTRL + X, następnie Y, a następnie Enter, aby zapisać plik i wyjść z edytora nano.

Krok 6 — Optymalizacja konfiguracji Nginx HTTP/2

Samo włączenie HTTP/2 to dobry początek, ale zastosowanie dodatkowych optymalizacji zapewnia maksymalną wydajność konfiguracji.

Zalecane ustawienia SSL i wydajności

Dodaj lub zweryfikuj następujące dyrektywy wewnątrz bloku server:

# Modern TLS protocols only
ssl_protocols TLSv1.2 TLSv1.3;

# Strong cipher suites compatible with HTTP/2
ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256;
ssl_prefer_server_ciphers off;

# SSL session caching for performance
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 1d;
ssl_session_tickets off;

# OCSP Stapling
ssl_stapling on;
ssl_stapling_verify on;
resolver 8.8.8.8 8.8.4.4 valid=300s;
resolver_timeout 5s;

# HTTP Strict Transport Security (HSTS)
add_header Strict-Transport-Security "max-age=63072000; includeSubDomains; preload" always;

# Additional security headers
add_header X-Frame-Options DENY;
add_header X-Content-Type-Options nosniff;
add_header X-XSS-Protection "1; mode=block";

# Gzip compression (complements HTTP/2)
gzip on;
gzip_vary on;
gzip_proxied any;
gzip_comp_level 6;
gzip_types text/plain text/css text/xml application/json application/javascript application/rss+xml application/atom+xml image/svg+xml;

> Uwaga dotycząca HTTP/2 i Gzip: HTTP/2 używa własnej kompresji nagłówków HPACK, ale włączenie Gzip dla treści odpowiedzi nadal zapewnia znaczące oszczędności przepustowości dla zasobów tekstowych.

Krok 7 — Testowanie konfiguracji Nginx

Nigdy nie restartuj Nginx bez wcześniejszego przetestowania konfiguracji pod kątem błędów składni. Błędnie skonfigurowany plik może wyłączyć cały serwer internetowy.

Uruchom wbudowany test konfiguracji:

sudo nginx -t

Pomyślny test daje następujący wynik:

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

Jeśli zobaczysz jakiekolwiek błędy, dokładnie przejrzyj dane wyjściowe. Komunikat o błędzie będzie zawierać nazwę pliku i numer wiersza, w którym wykryto problem.

Krok 8 — Uruchom ponownie Nginx i zastosuj zmiany

Po pomyślnym przejściu testu konfiguracji uruchom ponownie Nginx, aby zastosować wszystkie zmiany:

sudo systemctl restart nginx

Alternatywnie, jeśli wolisz przeładowanie bez przestojów (które stosuje zmiany konfiguracji bez przerywania aktywnych połączeń):

sudo systemctl reload nginx

W przypadku włączenia HTTP/2 zalecane jest pełne uruchomienie ponownie, aby upewnić się, że nowe ustawienia protokołu są w pełni zainicjowane.

Krok 9 — Weryfikacja aktywności HTTP/2

Po ponownym uruchomieniu Nginx potwierdź, że HTTP/2 jest faktycznie serwowany klientom, używając jednej z poniższych metod.

Metoda 1: Używając curl

Narzędzie wiersza poleceń curl może raportować wersję protokołu:

curl -I --http2 https://your_domain.com

Poszukaj nagłówka odpowiedzi:

HTTP/2 200

Jeśli widzisz HTTP/2 200, HTTP/2 działa prawidłowo.

Metoda 2: Używając polecenia OpenSSL

openssl s_client -connect your_domain.com:443 -alpn h2

W wyniku poszukaj:

ALPN protocol: h2

h2 jest identyfikatorem ALPN dla HTTP/2. Jeśli to widzisz, Twój serwer prawidłowo reklamuje obsługę HTTP/2 podczas uzgadniania TLS.

Metoda 3: Używając narzędzi deweloperskich przeglądarki

  1. Otwórz swoją stronę w Google Chrome lub Mozilla Firefox
  2. Naciśnij F12 aby otworzyć Narzędzia deweloperskie
  3. Przejdź do karty Sieć
  4. Przeładuj stronę (F5 lub Ctrl+R)
  5. Kliknij prawym przyciskiem myszy na dowolnym nagłówku kolumny na liście żądań i włącz kolumnę Protokół
  6. Powinieneś zobaczyć h2 wymieniony jako protokół dla żądań Twojej domeny

Metoda 4: Używając narzędzia testowania HTTP/2 online

Odwiedź https://tools.keycdn.com/http2-test i wpisz swoją domenę. Narzędzie potwierdzi, czy HTTP/2 jest aktywny i dostarczy dodatkowe szczegóły dotyczące konfiguracji TLS Twojego serwera.

Rozwiązywanie Typowych Problemów

HTTP/2 Nie Wyświetla Się w Przeglądarce Pomimo Konfiguracji

  • Przyczyna: Przeglądarka zapamiętała starsze połączenie HTTP/1.1.
  • Rozwiązanie: Wyczyść pamięć podręczną i pliki cookie przeglądarki lub przetestuj w oknie prywatnym/incognito.

nginx -t Zwraca Błędy Certyfikatu SSL

  • Przyczyna: Nieprawidłowe ścieżki certyfikatu w pliku konfiguracyjnym.
  • Rozwiązanie: Zweryfikuj dokładne ścieżki za pomocą sudo ls /etc/letsencrypt/live/your_domain.com/ i zaktualizuj dyrektywy ssl_certificate i ssl_certificate_key odpowiednio.

Port 443 Niedostępny

  • Przyczyna: Zapora sieciowa blokuje ruch HTTPS.
  • Rozwiązanie: Uruchom sudo ufw allow 443/tcp i zweryfikuj za pomocą sudo ufw status.

Certbot Nie Przejdzie Walidacji Domeny

  • Przyczyna: Rekord DNS A nie został jeszcze rozpropagowany lub port 80 jest zablokowany.
  • Rozwiązanie: Zweryfikuj, że Twoja domena rozwiązuje się na prawidłowy adres IP za pomocą dig your_domain.com A. Upewnij się, że port 80 jest otwarty dla wyzwania ACME HTTP.

unknown directive "http2" Błąd w Nginx

  • Przyczyna: Wersja Nginx jest zbyt stara (przed 1.9.5) lub została skompilowana bez obsługi HTTP/2.
  • Rozwiązanie: Zaktualizuj Nginx. Na Ubuntu 20.04+, wersja z domyślnego repozytorium obsługuje HTTP/2. Możesz również dodać oficjalny PPA Nginx: sudo add-apt-repository ppa:nginx/stable && sudo apt update && sudo apt upgrade nginx.

Podsumowanie

Pomyślnie zainstalowałeś Nginx z pełną obsługą HTTP/2 na Ubuntu. Oto podsumowanie wszystkiego, co zostało osiągnięte:

  • ✅ Zainstalowano i włączono Nginx jako usługę systemową
  • ✅ Uzyskano bezpłatny, automatycznie odnawialny certyfikat SSL za pośrednictwem Let’s Encrypt i Certbot
  • ✅ Skonfigurowano blok serwera Nginx z dyrektywą http2
  • ✅ Zastosowano wzmocnienie TLS, stapowanie OCSP, HSTS i kompresję Gzip
  • ✅ Przetestowano konfigurację i zweryfikowano, że HTTP/2 jest aktywny

Włączenie HTTP/2 to jedna z optymalizacji o największym wpływie i najmniejszym wysiłku, którą możesz zastosować na serwerze internetowym. W połączeniu z silnymi ustawieniami TLS i odpowiednimi nagłówkami buforowania znacznie poprawia czasy ładowania stron, wyniki Core Web Vitals i ostatecznie ranking witryny w wyszukiwarkach.

Utrzymuj swój stos na bieżąco: Regularnie uruchamiaj sudo apt update && sudo apt upgrade, aby Nginx, OpenSSL i Certbot były aktualne z najnowszymi poprawkami bezpieczeństwa.

Zwiększ wydajność swojego serwera

Zyski wydajności z HTTP/2 są najbardziej widoczne na szybkiej i niezawodnej infrastrukturze. Jeśli jesteś obecnie na hostingu współdzielonym i osiągasz limity zasobów, rozważ uaktualnienie do planu VPS Hosting z dedykowanymi zasobami i pełnym dostępem root. W przypadku aplikacji o dużym ruchu Serwery dedykowane oferują niezrównaną wydajność. Możesz również łatwo zarządzać środowiskiem serwera za pomocą VPS z cPanel, jeśli wolisz interfejs graficzny zamiast wiersza poleceń.

Niezależnie od potrzeb infrastruktury, AlexHost zapewnia platformę do uruchamiania Nginx, HTTP/2 i całego stosu internetowego z maksymalną wydajnością.