15%

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
01.11.2024

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

Nginx jest jednym z najszerzej wdrażanych serwerów internetowych na świecie, słynący z wyjątkowej wydajności, niskiego zużycia pamięci i zdolności 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 multipleksowanie żądań, 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 witryn, którzy chcą zmaksymalizować wydajność sieci na serwerze Linux. Jeśli prowadzisz swoją witrynę na planie VPS Hosting lub Dedicated Server, ten samouczek ma bezpośrednie zastosowanie do Twojego środowiska.

Spis treści

  1. Co to jest HTTP/2 i dlaczego ma to znaczenie?
  2. Wymagania wstępne
  3. Krok 1 — Aktualizacja indeksu pakietów systemowych
  4. Krok 2 — Instalacja Nginx
  5. Krok 3 — Instalacja OpenSSL
  6. Krok 4 — Uzyskanie bezpłatnego certyfikatu SSL za pomocą Let’s Encrypt
  7. Krok 5 — Konfiguracja Nginx dla HTTP/2
  8. Krok 6 — Optymalizacja konfiguracji Nginx HTTP/2
  9. Krok 7 — Test konfiguracji Nginx
  10. Krok 8 — Ponowne uruchomienie Nginx i zastosowanie zmian
  11. Krok 9 — Weryfikacja, czy HTTP/2 jest aktywny
  12. Rozwiązywanie typowych problemów
  13. Podsumowanie

Co to jest HTTP/2 i dlaczego ma to znaczenie?

HTTP/2 jest drugą główną wersją protokołu Hypertext Transfer Protocol, standaryzowaną 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 stosunku do HTTP/1.1:

FunkcjaHTTP/1.1HTTP/2
MultipleksowanieJedno żądanie na połączenieWiele równoczesnych żądań
Kompresja nagłówkówNagłówki w zwykłym tekścieKompresja HPACK
Server pushNieobsługiwaneObsługiwane
Protokół binarnyTekstowyBinarne framing
Ponowne użycie połączeniaOgraniczoneW pełni trwałe
OpóźnienieWyższeZnacznie zmniejszone

Dla właścicieli witryn włączenie HTTP/2 przekłada się bezpośrednio na szybsze ładowanie stron, lepsze wyniki Core Web Vitals i poprawione rankingi SEO — ponieważ Google używa szybkości strony jako sygnału rankingowego.

> 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

Zanim zaczniesz, 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
  • Zarejestrowana nazwa domeny wskazująca na adres IP Twojego serwera za pomocą rekordu A
  • Porty 80 i 443 otwarte w zaporze (UFW lub iptables)
  • Podstawowa 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 Twoim 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 Nginx do automatycznego uruchamiania przy starcie

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ę

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óry 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 — Uzyskanie bezpłatnego certyfikatu SSL za pomocą Let’s Encrypt

Let’s Encrypt zapewnia bezpłatne, automatycznie odnawialne certyfikaty SSL/TLS zaufane przez wszystkie główne przeglądarki. Klient Certbot czyni cały proces prostym.

Instalacja Certbot i wtyczki Nginx

sudo apt install certbot python3-certbot-nginx -y

Żądanie certyfikatu 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 za pośrednictwem wyzwania HTTP
  2. Wydawać certyfikat od Let’s Encrypt
  3. Automatycznie modyfikować konfigurację Nginx do użycia certyfikatu
  4. Konfigurować przekierowania HTTPS z HTTP

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

Weryfikacja automatycznego odnawiania certyfikatu

Certyfikaty Let’s Encrypt wygasają po 90 dniach. Certbot instaluje zadanie cron lub timer systemd w celu ich automatycznego odnowienia. Przetestuj proces odnowienia za pomocą suchego 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ż Dedicated Server dla pełnej kontroli 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.

Otwieranie pliku konfiguracji 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

Aktualizacja bloku serwera w celu włączenia 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 linii listen: dodanie http2 po ssl aktywuje protokół HTTP/2 dla tego wirtualnego hosta.

Zapisz i wyjdź

Naciśnij CTRL + X, następnie Y, 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ść z Twojej 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 na temat 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 znaczne oszczędności przepustowości dla zasobów tekstowych.

Krok 7 — Test konfiguracji Nginx

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

Uruchom wbudowany test konfiguracji:

sudo nginx -t

Pomyślny test daje wynik:

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

Jeśli widzisz jakieś błędy, uważnie przejrzyj dane wyjściowe. Komunikat o błędzie będzie zawierać nazwę pliku i numer linii, gdzie problem został wykryty.

Krok 8 — Ponowne uruchomienie Nginx i zastosowanie zmian

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 w szczególności zalecane jest pełne ponowne uruchomienie, aby upewnić się, że nowe ustawienia protokołu są w pełni zainicjowane.

Krok 9 — Weryfikacja, czy HTTP/2 jest aktywny

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

Metoda 1: Używanie curl

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

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żywanie polecenia OpenSSL

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

W danych wyjściowych 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żywanie narzędzi deweloperskich przeglądarki

  1. Otwórz swoją witrynę w Google Chrome lub Mozilla Firefox
  2. Naciśnij F12 aby otworzyć Narzędzia deweloperskie
  3. Przejdź do karty Network
  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ę Protocol
  6. Powinieneś zobaczyć h2 wymieniony jako protokół dla żądań Twojej domeny

Metoda 4: Używanie 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

15%

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