Cum să instalezi Nginx cu suport HTTP/2 pe Ubuntu (Ghid complet)
Nginx este unul dintre cele mai larg implementate servere web din lume, celebru pentru performanța sa excepțională, amprenta redusă de memorie și capacitatea de a gestiona mii de conexiuni simultane. Atunci când este combinat cu HTTP/2, Nginx devine o platformă și mai puternică — permițând cereri multiplexate, compresie de antet, server push și timpi de încărcare a paginii dramatic redusi.
Acest ghid cuprinzător te ghidează prin fiecare pas necesar pentru a instala Nginx cu suport complet HTTP/2 pe Ubuntu 20.04 și Ubuntu 22.04 LTS, de la configurarea inițială prin configurarea SSL, optimizarea blocului de server și verificare în timp real.
> Pentru cine este acest ghid? Administratori de sisteme, dezvoltatori și proprietari de site-uri care doresc să maximizeze performanța web pe un server Linux. Dacă rulezi site-ul tău pe un plan VPS Hosting sau un Server Dedicat, acest tutorial se aplică direct mediului tău.
Cuprins
- Ce este HTTP/2 și de ce conteaza?
- Cerințe preliminare
- Pasul 1 — Actualizează indexul pachetelor sistemului
- Pasul 2 — Instalează Nginx
- Pasul 3 — Instalează OpenSSL
- Pasul 4 — Obține un certificat SSL gratuit cu Let’s Encrypt
- Pasul 5 — Configurează Nginx pentru HTTP/2
- Pasul 6 — Optimizează configurația Nginx HTTP/2
- Pasul 7 — Testează configurația Nginx
- Pasul 8 — Repornește Nginx și aplică modificările
- Pasul 9 — Verifică că HTTP/2 este activ
- Depanarea problemelor comune
- Concluzie
Ce este HTTP/2 și de ce conteaza?
HTTP/2 este a doua versiune majoră a Hypertext Transfer Protocol, standardizată în RFC 7540. A fost proiectată pentru a aborda limitările de performanță ale HTTP/1.1, care a fost în uz din 1997.
Avantajele cheie ale HTTP/2 față de HTTP/1.1:
| Caracteristică | HTTP/1.1 | HTTP/2 |
|---|---|---|
| Multiplexare | O cerere per conexiune | Cereri simultane multiple |
| Compresie antet | Antete în text simplu | Compresie HPACK |
| Server push | Nesuportat | Suportat |
| Protocol binar | Bazat pe text | Cadru binar |
| Refolosire conexiune | Limitată | Complet persistentă |
| Latență | Mai mare | Semnificativ redusă |
Pentru proprietarii de site-uri, activarea HTTP/2 se traduce direct în încărcări de pagină mai rapide, scoruri mai bune Core Web Vitals și clasamente SEO îmbunătățite — deoarece Google folosește viteza paginii ca semnal de clasament.
> Important: HTTP/2 necesită HTTPS (TLS/SSL). Nu poți rula HTTP/2 peste o conexiune necriptată în niciun browser modern. Acesta este motivul pentru care obținerea unui certificat SSL este un pas obligatoriu în acest ghid. Dacă ai nevoie de un certificat de încredere pentru domeniul tău, AlexHost oferă Certificatele SSL pentru toate cazurile de utilizare.
Cerințe preliminare
Înainte de a începe, asigură-te că ai următoarele în loc:
- Un server care rulează Ubuntu 20.04 LTS sau Ubuntu 22.04 LTS (pașii sunt aproape identici pentru ambele)
- Un utilizator non-root cu
sudoprivilegii sau acces direct root - Un nume de domeniu înregistrat indicat către adresa IP a serverului tău printr-o înregistrare A
- Porturile 80 și 443 deschise în firewall-ul tău (UFW sau iptables)
- Familiaritate de bază cu linia de comandă Linux
Dacă nu ai încă un domeniu, poți înregistra unul direct prin Înregistrarea domeniilor AlexHost și să-l indici către serverul tău în câteva minute.
Pasul 1 — Actualizează indexul pachetelor sistemului
Întotdeauna începe prin reîmprospătarea indexului pachetelor pentru a te asigura că instalezi versiunile cele mai recente disponibile ale tuturor software-ului:
sudo apt update && sudo apt upgrade -yAceastă comandă actualizează lista locală de pachete și modernizează orice pachete deja instalate pe sistemul tău.
Pasul 2 — Instalează Nginx
Instalează pachetul Nginx
Depozitele implicite ale Ubuntu includ o versiune stabilă a Nginx. Instalează-o cu:
sudo apt install nginx -yPornește serviciul Nginx
Odată instalat, pornește serviciul Nginx imediat:
sudo systemctl start nginxActivează Nginx pentru a se porni automat la boot
Asigură-te că Nginx se lansează automat de fiecare dată când serverul se repornește:
sudo systemctl enable nginxVerifică că Nginx rulează
Confirmă că serviciul este activ și rulează:
sudo systemctl status nginxAr trebui să vezi o ieșire similară cu:
● 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 ...Permite Nginx prin firewall
Dacă UFW este activ pe serverul tău, permite traficul HTTP și HTTPS:
sudo ufw allow 'Nginx Full'
sudo ufw statusNginx Full deschide atât portul 80 (HTTP) cât și portul 443 (HTTPS), ambele necesare pentru această configurație.
Pasul 3 — Instalează OpenSSL
HTTP/2 depinde de TLS, care la rândul său depinde de OpenSSL. Instalează-l pentru a te asigura că toate dependențele criptografice sunt disponibile:
sudo apt install openssl -yVerifică versiunea instalată:
openssl versionAr trebui să vezi o ieșire ca OpenSSL 3.0.x sau similar. Orice versiune peste 1.0.2 suportă complet seturile de cifre necesare pentru HTTP/2.
Pasul 4 — Obține un certificat SSL gratuit cu Let’s Encrypt
Let’s Encrypt oferă certificatele SSL/TLS gratuite, reînnoibile automat și de încredere de către toți browserele majore. Clientul Certbot face întregul proces simplu.
Instalează Certbot și pluginul Nginx
sudo apt install certbot python3-certbot-nginx -ySolicită certificatul SSL
Înlocuiește your_domain.com cu domeniul tău înregistrat actual:
sudo certbot --nginx -d your_domain.com -d www.your_domain.comCertbot va:
- Verifica proprietatea domeniului printr-o provocare HTTP
- Emite certificatul de la Let’s Encrypt
- Modifică automat configurația Nginx pentru a folosi certificatul
- Configurează redirecționări HTTPS de la HTTP
Urmează prompturile interactive. Când ți se cere dacă să redirecționezi traficul HTTP la HTTPS, selectează opțiunea 2 (Redirecționare) — aceasta este alegerea recomandată.
Verifică reînnoirea automată a certificatului
Certificatele Let’s Encrypt expiră după 90 de zile. Certbot instalează o sarcină cron sau un cronometru systemd pentru a le reînnoi automat. Testează procesul de reînnoire cu o rulare de probă:
sudo certbot renew --dry-runDacă nu apar erori, reînnoirea automată este configurată corect.
> Sfat: Pentru mediile de producție cu mai multe domenii sau certificatele wildcard, ia în considerare un Server Dedicat pentru control complet asupra infrastructurii SSL.
Pasul 5 — Configurează Nginx pentru HTTP/2
Acum că SSL este în loc, trebuie să activezi explicit HTTP/2 în configurația blocului de server Nginx.
Deschide fișierul de configurare Nginx
Configurația site-ului implicit se află la:
sudo nano /etc/nginx/sites-available/defaultDacă ai creat un bloc de server personalizat pentru domeniul tău (recomandat), deschide acel fișier în schimb:
sudo nano /etc/nginx/sites-available/your_domain.comActualizează blocul de server pentru a activa HTTP/2
Localizează directiva listen 443 ssl;. Certbot va fi adăugat aceasta automat. Modifică-o pentru a include 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;
}Schimbarea critică este pe linia listen: adăugarea http2 după ssl activează protocolul HTTP/2 pentru acel gazdă virtuală.
Salvează și ieși
Apasă CTRL + X, apoi Y, apoi Enter pentru a salva fișierul și a ieși din editorul nano.
Pasul 6 — Optimizează configurația Nginx HTTP/2
Activarea simplă a HTTP/2 este un bun început, dar aplicarea optimizărilor suplimentare asigură că extragi performanța maximă din configurația ta.
Setări SSL și de performanță recomandate
Adaugă sau verifică următoarele directive în interiorul blocului server al tău:
# 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;> Notă despre HTTP/2 și Gzip: HTTP/2 folosește propria compresie de antet HPACK, dar activarea Gzip pentru corpurile de răspuns oferă în continuare economii semnificative de lățime de bandă pentru active bazate pe text.
Pasul 7 — Testează configurația Nginx
Nu repornii niciodată Nginx fără a testa mai întâi configurația pentru erori de sintaxă. Un fișier configurat incorect poate duce la căderea întregului server web.
Rulează testul de configurare încorporat:
sudo nginx -tUn test reușit produce:
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successfulDacă vezi vreo eroare, revizuiește cu atenție ieșirea. Mesajul de eroare va include numele fișierului și numărul liniei unde a fost detectată problema.
Pasul 8 — Repornește Nginx și aplică modificările
Odată ce testul de configurare trece, repornește Nginx pentru a aplica toate modificările:
sudo systemctl restart nginxAlternativ, dacă preferi o reîncărcare fără timp de inactivitate (care aplică modificări de configurare fără a renunța la conexiuni active):
sudo systemctl reload nginxPentru activarea HTTP/2 în special, se recomandă o repornire completă pentru a asigura că noile setări de protocol sunt complet inițializate.
Pasul 9 — Verifică că HTTP/2 este activ
După repornirea Nginx, confirmă că HTTP/2 este de fapt servit clienților folosind una dintre următoarele metode.
Metoda 1: Folosind curl
Instrumentul de linie de comandă curl poate raporta versiunea protocolului utilizată:
curl -I --http2 https://your_domain.comCaută antetul de răspuns:
HTTP/2 200Dacă vezi HTTP/2 200, HTTP/2 funcționează corect.
Metoda 2: Folosind comanda OpenSSL
openssl s_client -connect your_domain.com:443 -alpn h2În ieșire, caută:
ALPN protocol: h2h2 este identificatorul ALPN pentru HTTP/2. Dacă vezi aceasta, serverul tău anunță corect suportul HTTP/2 în timpul apelului de mână TLS.
Metoda 3: Folosind instrumentele pentru dezvoltatori ale browserului
- Deschide site-ul tău în Google Chrome sau Mozilla Firefox
- Apasă
F12pentru a deschide instrumentele pentru dezvoltatori - Navighează la fila Rețea
- Reîncarcă pagina (
F5sauCtrl+R) - Fă clic dreapta pe orice antet de coloană din lista de cereri și activează coloana Protocol
- Ar trebui să vezi
h2listat ca protocol pentru cererile domeniului tău
Metoda 4: Folosind un instrument online de testare HTTP/2
Vizitează https://tools.keycdn.com/http2-test și introdu domeniul tău. Instrumentul va confirma dacă HTTP/2 este activ și va furniza detalii suplimentare despre configurația TLS a serverului tău.
Depanarea problemelor comune
HTTP/2 nu apare în browser în ciuda configurației
- Cauză: Browserul a memorat o conexiune mai veche HTTP/1.1.
- Remediere: Șterge memoria cache și cookie-urile browserului, sau testează într-o fereastră privată/incognito.
nginx -t returnează erori de certificat SSL
- Cauză: Căi de certificat incorecte în fișierul de configurare.
- Remediere: Verifică căile exacte folosind
sudo ls /etc/letsencrypt/live/your_domain.com/și actualizează directivelessl_certificateșissl_certificate_keyîn consecință.
Portul 443 nu este accesibil
- Cauză: Firewall-ul blochează traficul HTTPS.
- Remediere: Rulează
sudo ufw allow 443/tcpși verifică cusudo ufw status.
Certbot eșuează validarea domeniului
- Cauză: Înregistrarea A DNS nu s-a propagat încă, sau portul 80 este blocat.
- Remediere: Verifică că domeniul tău se rezolvă la IP-ul corect folosind
dig your_domain.com A. Asigură-te că portul 80 este deschis pentru provocarea ACME HTTP.
