Kako omogućiti HTTP/2.0 u Nginxu


HTTP/2 je najnoviji standard za HTTP protokol, on je nasljednik HTTP/1.1. Postaje sve popularniji zbog prednosti koje donosi web programerima i korisnicima općenito. Pruža optimizovan transport za HTTP semantiku podržavajući sve osnovne karakteristike HTTP/1.1, ali ima za cilj da bude efikasniji na više načina.

Postoji mnogo funkcija povrh HTTP/2 koje vam daju više mogućnosti za optimizaciju web stranice/aplikacije. Nudi istinsko multipleksiranje i konkurentnost, bolju kompresiju zaglavlja (binarno kodiranje), bolje određivanje prioriteta, bolje mehanizme kontrole toka i novi način interakcije nazvan “server push” koji omogućava serveru da proslijeđuje odgovore klijentu . Da ne spominjemo, HTTP/2 je baziran na Googleovom eksperimentalnom SPDY protokolu.

Stoga je primarni fokus HTTP/2 smanjenje ukupnog vremena učitavanja web stranice, čime se poboljšavaju performanse. Također se fokusira na korištenje mrežnih i serverskih resursa kao i sigurnost jer je kod HTTP/2, SSL/TLS enkripcija obavezna.

U ovom članku ćete naučiti kako omogućiti Nginx s podrškom za HTTP/2 na Linux serverima.

Preduvjeti:

  • Radna instalacija NGINX verzije 1.9.5 ili novija, izgrađena sa ngx_http_v2_module modulom.
  • Uvjerite se da vaša stranica koristi SSL/TLS certifikat, ako ga nemate, možete ga nabaviti od Let’s Encrypt ili koristiti samopotpisani certifikat.

Možete instalirati NGINX ili ga implementirati sa LEMP stogom kao što je opisano u sljedećim vodičima:

  • Kako instalirati Nginx na CentOS 8
  • Kako instalirati LEMP server na CentOS 8
  • Kako instalirati NGINX, MySQL/MariaDB i PHP na RHEL 8
  • Kako instalirati LEMP Stack sa PhpMyAdmin u Ubuntu 20.04
  • Instalirajte Nginx sa blokovima servera (virtualni hostovi) na Debian 10
  • Kako koristiti Nginx kao HTTP balanser opterećenja u Linuxu

Kako omogućiti HTTP/2.0 u NGINX-u

Ako imate instaliran NGINX, provjerite da li je napravljen sa ngx_http_v2_module modulom tako što ćete pokrenuti sljedeću naredbu.

strings /usr/sbin/nginx | grep _module | grep -v configure| sort | grep ngx_http_v2_module

Nakon što imate web stranicu/aplikaciju koju opslužuje NGINX sa konfiguriranim HTTPS, otvorite datoteku bloka virtuelnog servera vaše web stranice (ili virtuelni host) za uređivanje.

vi /etc/nginx/conf.d/example.com.conf                    [On CentOS/RHEL]
sudo nano /etc/nginx/sites-available/example.com.conf    [On Ubuntu/Debian]

Možete omogućiti HTTP/2 podršku jednostavnim dodavanjem parametra http2 svim listen direktivama kao što je prikazano na sljedećem snimku ekrana.

listen 443 ssl http2;

Primjer konfiguracije bloka servera izgleda dolje.


server {
        server_name example.com www.example.com;
        access_log  /var/log/nginx/example.com_access.log;
        error_log  /var/log/nginx/example.com_error.log;

        listen [::]:443 ssl ipv6only=on http2; # managed by Certbot
        listen 443 ssl http2; # managed by Certbot

        ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem; # managed by Certbot
        ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem; # managed by Certbot
        include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
        ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot    
}

Sačuvajte promjene u datoteci i zatvorite je.

Zatim provjerite sintaksu konfiguracije NGINX-a, ako je u redu, ponovo pokrenite Nginx servis.

nginx -t
systemctl restart nginx

Zatim otvorite web preglednik da provjerite da li se vaša web stranica poslužuje putem HTTP/2.

http://www.example.com

Da biste pristupili HTTP zaglavljima, kliknite desnim tasterom miša na prikazanu web stranicu, odaberite Inspect sa liste opcija da otvorite alate za programere, zatim kliknite karticu Mreža i ponovo učitajte stranicu.

Provjerite pod Protokoli da vidite onaj koji vaša web lokacija koristi (ako ne vidite zaglavlje Protocols, kliknite desnim tasterom miša na bilo koje od zaglavlja, npr. Naziv, a zatim označite Protokol sa liste da ga prikažete kao zaglavlje).

Ako vaša web lokacija radi na HTTP/1.1, pod Protokol, vidjet ćete http/1.1 kao što je prikazano na sljedećem snimku ekrana.

Ako radi na HTTP/2, pod Protokol, vidjet ćete h2 kao što je prikazano na sljedećem snimku ekrana. Možda ćete želeti da onemogućite keš pretraživača da vidite najnoviji sadržaj koji se servira direktno sa veb servera.

To je sve! Za više informacija pogledajte dokumentaciju modula ngx_http_v2_module. Ne ustručavajte se postavljati pitanja putem donjeg obrasca za povratne informacije.