Dokumentacija
Vklopite HTTP/2
Vklopite HTTP/2
Pri HTTP/1.1 brskalnik z ene domene hkrati prenaša največ približno šest datotek, vse druge pa čakajo v vrsti. Običajna stran s 60–100 slikami, skriptami in slogi se nalaga v valovih. HTTP/2 jih pošlje vse naenkrat po eni povezavi, s stisnjenimi glavami, zato se ista stran začne prikazovati prej, najbolj opazno na telefonu z veliko zakasnitvijo. Na strani ni treba spremeniti ničesar: HTML, datoteke in naslovi ostanejo enaki.
HTTP/2 podpirajo vsi sodobni brskalniki in večina strežnikov ga zna že leta; pogosto le ni bil vklopljen. Kontrolni seznam strani pokaže opozorilo, ko je stran postrežena samo prek HTTP/1.1. Tudi HTTP/3 šteje kot uspeh.
Preden začnete: HTTPS
Brskalniki HTTP/2 uporabljajo samo prek HTTPS. Stran, ki se še vedno streže prek navadnega http://, mora najprej dobiti certifikat in preusmeritev: glejte Preusmerite HTTP na HTTPS.
Preverite sami
Namesto example.com vpišite svojo stran:
curl -s -o /dev/null --http2 -w '%{http_version}\n' https://example.com/
openssl s_client -connect example.com:443 -servername example.com -alpn h2 </dev/null 2>/dev/null | grep -i alpn
Prvi ukaz izpiše 2 (ali 3), ko HTTP/2 deluje, in 1.1, ko ne. Drugi pokaže, na kaj je strežnik pristal med rokovanjem TLS: ALPN protocol: h2 je HTTP/2, No ALPN negotiated pa pomeni, da ga strežnik ne ponuja.
Kako popraviti
Izberite strežnik, s katerim se brskalnik obiskovalca dejansko pogovarja. Če stran teče za Cloudflarom, je to Cloudflare, in izvorni strežnik za to postavko ni pomemben.
nginx
Najprej preverite različico z nginx -v. Nastavitev se je v različici 1.25.1 premaknila.
nginx 1.25.1 in novejši, v bloku server { … } strani za vrata 443:
server {
listen 443 ssl;
http2 on;
# …
}
Starejši nginx (na primer 1.22 na Debianu 12, 1.24 na Ubuntuju 24.04): http2 dodajte v vrstico listen:
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
# …
}
Datoteka strani je na Debianu in Ubuntuju v /etc/nginx/sites-available/, na Rocky, Alma in CentOS pa v /etc/nginx/conf.d/. Preverite in uveljavite:
sudo nginx -t && sudo systemctl reload nginx
Apache in LiteSpeed
Z dostopom do strežnika (Apache). HTTP/2 je mod_http2, na voljo od Apacha 2.4.17. Na Debianu in Ubuntuju ga vklopite s sudo a2enmod http2, na Rocky, Alma in CentOS ga namestite s sudo dnf install mod_http2. Nato to dodajte v <VirtualHost *:443> strani ali enkrat v glavno konfiguracijo za vse strani:
Protocols h2 http/1.1
En pogoj: HTTP/2 ne deluje z MPM prefork, ki ga Debian in Ubuntu uporabljata, kadar PHP teče kot mod_php. Preverite z apachectl -V | grep -i mpm. Če piše prefork, najprej preklopite na PHP-FPM in MPM event (8.3 zamenjajte s svojo različico PHP-ja):
sudo apt install php8.3-fpm
sudo a2dismod php8.3 mpm_prefork
sudo a2enmod mpm_event proxy_fcgi setenvif http2
sudo a2enconf php8.3-fpm
sudo apachectl configtest && sudo systemctl restart apache2
Sprememba MPM-ja zahteva poln restart, ne reload. Na Rocky, Alma in CentOS je PHP-FPM z event že privzet.
LiteSpeed streže HTTP/2 (in HTTP/3) prek HTTPS brez kakršne koli nastavitve. Gostitelj z LiteSpeedom, ki odgovarja samo s HTTP/1.1, ga je izklopil na ravni strežnika; vprašajte podporo.
cPanel
Deljeno gostovanje: HTTP/2 je nastavitev za cel strežnik, ki jo lahko spremeni samo gostitelj. Podporo prosite, naj ga vklopi; večina gostiteljev ga že ima.
Lasten strežnik z WHM:
- Odprite WHM → EasyApache 4 in ob trenutnem profilu kliknite Customize.
- Pod Apache MPM izberite
mod_mpm_event(alimod_mpm_worker). HTTP/2 spreforkne deluje. - Pod Apache Modules vklopite
mod_http2. - Pojdite na Review in kliknite Provision.
Če strežnik PHP še vedno poganja kot modul Apacha (DSO), odhod s prefork zahteva selitev PHP-ja na PHP-FPM, kar naredite v MultiPHP Manager.
Plesk
V Plesku obiskovalcem odgovarja nginx in v trenutnih različicah je HTTP/2 privzeto vklopljen. Če preverjanje kaže HTTP/1.1, ga vklopite iz ukazne vrstice strežnika:
plesk bin http2_pref --enable
HTTP/2 potrebuje nginx: če je bil izklopljen (stran teče samo na Apachu), ga znova vklopite z plesk sbin nginxmng --enable ali vprašajte gostitelja. Na deljenem gostovanju s Pleskom gostitelja prosite, naj zgornji ukaz požene on.
Cloudflare
Ko stran teče za Cloudflarom (oranžen oblak), Cloudflare obiskovalcem streže prek HTTP/2 na vseh paketih, ne glede na to, kaj podpira izvorni strežnik. HTTP/3 lahko vklopite v nastavitvah domene Network (HTTP/3 (with QUIC)).
Če preverjanje še vedno kaže HTTP/1.1, je zapis verjetno DNS only (siv oblak), zato se obiskovalci pogovarjajo neposredno z vašim strežnikom. Vklopite proxy ali popravite strežnik po njegovem zavihku.
Node.js in Next.js
Node.js ima modul http2, vendar je aplikacija v Node ali Next.js v produkciji običajno za nginxom, izenačevalnikom obremenitve ali platformo, kot je Vercel, in tam se odloči o HTTP/2. Vercel in Netlify privzeto strežeta HTTP/2 in HTTP/3. Za lastnim nginxom sledite zavihku nginx; povezava od nginxa do aplikacije lahko ostane HTTP/1.1.
IIS in ASP.NET
IIS 10 (Windows Server 2016 in novejši) HTTP/2 samodejno uporablja za vsako vezavo HTTPS. IIS 8.5 in starejši (Windows Server 2012 R2) tega ne zna; edina pot je novejši Windows Server ali proxy, kot je Cloudflare, pred njim.
Na Windows Serverju 2019 in novejših ima vezava HTTPS potrditveno polje Disable HTTP/2 (Site → Bindings → Edit). Prepričajte se, da ni obkljukano.
Gostovane platforme
Shopify, Wix, Squarespace in Webflow vse strani strežejo prek HTTP/2 ali HTTP/3. Če kontrolni seznam za stran na eni od njih kaže HTTP/1.1, domena verjetno ne kaže neposredno na platformo, na primer prek starega proxyja; preverite njene zapise DNS.
Potrdite popravek
Znova poženite ukaz curl iz razdelka Preverite sami, nato v PulseKeeperju odprite tarčo in na zavihku Kontrolni seznam kliknite Preveri zdaj. Postavka se v nekaj minutah obarva OK, ne šele ob naslednjem dnevnem preverjanju.