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:
| Funkcja | HTTP/1.1 | HTTP/2 |
|---|---|---|
| Multipleksowanie | Jedno żądanie na połączenie | Wiele jednoczesnych żądań |
| Kompresja nagłówków | Nagłówki w postaci zwykłego tekstu | Kompresja HPACK |
| Server push | Nieobsługiwane | Obsługiwane |
| Protokół binarny | Oparty na tekście | Binarne ramki |
| Ponowne użycie połączenia | Ograniczone | W pełni trwałe |
| Opóźnienie | Wyższe | Znacznie 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
sudouprawnieniami 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 -yTo 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 -yUruchomienie usługi Nginx
Po zainstalowaniu uruchom usługę Nginx natychmiast:
sudo systemctl start nginxWłą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 nginxWeryfikacja, czy Nginx jest uruchomiony
Potwierdź, że usługa jest aktywna i uruchomiona:
sudo systemctl status nginxPowinieneś 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 statusNginx 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 -ySprawdź zainstalowaną wersję:
openssl versionPowinieneś 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 -yPoproś o Certyfikat SSL
Zastąp your_domain.com swoją rzeczywistą zarejestrowaną nazwą domeny:
sudo certbot --nginx -d your_domain.com -d www.your_domain.comCertbot będzie:
- Weryfikować własność domeny poprzez wyzwanie HTTP
- Wydać certyfikat z Let’s Encrypt
- Automatycznie modyfikować konfigurację Nginx aby używać certyfikatu
- 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-runJeś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/defaultJeśli utworzyłeś niestandardowy blok serwera dla swojej domeny (zalecane), otwórz zamiast tego ten plik:
sudo nano /etc/nginx/sites-available/your_domain.comZaktualizuj 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 -tPomyś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 successfulJeś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 nginxAlternatywnie, jeśli wolisz przeładowanie bez przestojów (które stosuje zmiany konfiguracji bez przerywania aktywnych połączeń):
sudo systemctl reload nginxW 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.comPoszukaj nagłówka odpowiedzi:
HTTP/2 200Jeś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 h2W wyniku poszukaj:
ALPN protocol: h2h2 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
- Otwórz swoją stronę w Google Chrome lub Mozilla Firefox
- Naciśnij
F12aby otworzyć Narzędzia deweloperskie - Przejdź do karty Sieć
- Przeładuj stronę (
F5lubCtrl+R) - Kliknij prawym przyciskiem myszy na dowolnym nagłówku kolumny na liście żądań i włącz kolumnę Protokół
- Powinieneś zobaczyć
h2wymieniony 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 dyrektywyssl_certificateissl_certificate_keyodpowiednio.
Port 443 Niedostępny
- Przyczyna: Zapora sieciowa blokuje ruch HTTPS.
- Rozwiązanie: Uruchom
sudo ufw allow 443/tcpi 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ą.
na wszystkich usługach hostingowych