kun je HTTP/2 inschakelen in Apache Web Server op Ubuntu en Debian
Hypertext Transfer Protocol Version 2(HTTP/2) is de nieuwste versie van het HTTP protocol, als IETF standaard gepubliceerd in RFC 7540 in 2015. De nadruk van het protocol ligt op prestaties; in het bijzonder op door de eindgebruiker waargenomen latentie, netwerk-, en server resource gebruik. Een belangrijk doel is het gebruik van een enkele verbinding van browsers naar een website mogelijk te maken. Het protocol is achterwaarts compatibel, dus HTTP methoden, statuscodes, en semantiek zijn dezelfde als voor eerdere versies van het protocol. Apache heeft HTTP/2 ondersteuning sinds versie 2.4.17. In deze handleiding ga ik er van uit dat je al een werkende TLS configuratie hebt, en dat je de vereiste Apache versie op je Linux distributie naar keuze geïnstalleerd hebt, en dat je weet hoe je Let’s Encrypt moet gebruiken, of dat je weet hoe je een zelf-ondertekend certificaat kunt uitgeven.
Deze handleiding is getest op Debian 10, Debian 9, Ubuntu 20.04 LTS, en Ubuntu 18.04 LTS.
Vereisten
Om HTTP/2 in Apache in te schakelen moet je aan de volgende voorwaarden voldoen:
- Eerst moet je HTTPS inschakelen op je server. Alle grote browsers staan het gebruik van HTTP/2 alleen over HTTPS toe. Ook isTLS protocol versie >= 1.2 met moderne cipher suites vereist.
- Zorg er vervolgens voor dat je Apache 2.4.17 of hoger draait, want HTTP/2 wordt vanaf deze versie ondersteund.
- Zorg er ook voor dat je client/browser daadwerkelijk HTTP/2 ondersteunt.
Schakel de module mod_php uit
Voordat we de Apache MPM module in de volgende stap kunnen overschakelen op mpm_event, moeten we de oude mod_php modus uitschakelen en vervangen door de modernere PHP-FPM modus. De commando’s verschillen voor elke versie van het besturingssysteem, gebruik de commando’s die bij je geïnstalleerde systeem passen.
Ubuntu 20.04 LTS
sudo apt-get install php7.4-fpm
sudo a2dismod php7.4
sudo a2enconf php7.4-fpm
sudo a2enmod proxy_fcgi
Debian 10
sudo apt-get install php7.3-fpm
sudo a2dismod php7.3
sudo a2enconf php7.3-fpm
sudo a2enmod proxy_fcgi
Ubuntu 18.04 LTS
sudo apt-get install php7.2-fpm
sudo a2dismod php7.2
sudo a2enconf php7.2-fpm
sudo a2enmod proxy_fcgi
Debian 9
sudo apt-get install php7.0-fpm
sudo a2dismod php7.0
sudo a2enconf php7.0-fpm
sudo a2enmod proxy_fcgi
Schakel een Apache MPM in die compatibel is met HTTP/2
Standaard zal Apache de prefork MPM gebruiken. Deze MPM is niet compatibel met HTTP/2, dus zullen we hem moeten vervangen door de modernere mpm_event module.
Eerst schakelen we de mpm_prefork module uit:
sudo a2dismod mpm_prefork
Daarna schakelen we de mpm_event module in:
sudo a2enmod mpm_event
Schakel HTTP/2 ondersteuning in Apache in
Om HTTP/2 werkend te krijgen op Apache moet je SSL en HTTP/2 modules inschakelen en laden . Om dat te doen kun je in je terminal het volgende uitvoeren:
sudo a2enmod ssl
en dan
sudo a2enmod http2
Om deze nieuwe modules te activeren, moet je uitvoeren:
sudo systemctl restart apache2
Na het inschakelen en laden van de nodige Apache modules, navigeer je naar je Apache configuratie directory en bewerk je Apache configuratie.
Om HTTP/2 op je Apache webserver in te schakelen voeg je een van de volgende dingen toe aan je globale Apache configuratie of binnen een bepaalde virtuele host.
Protocols h2 http/1.1
Hier is de minimale virtuele server configuratie die gebruikt kan worden om HTTP/2 in een bepaalde virtuele host in te schakelen:
<VirtualHost *:443>
ServerName example.com
ServerAlias www.example.com
DocumentRoot /var/www/public_html/example.com
SSLEngine on
SSLCertificateKeyFile /path/to/private.pem
SSLCertificateFile /path/to/cert.pem
SSLProtocol all -SSLv3 -TLSv1 -TLSv1.1
Protocols h2 http/1.1
</VirtualHost>
Om te controleren of je server HTTP/2 ondersteunt, kun je de dev tools van je browser gebruiken. Hieronder zie je schermafdrukken van Google Chrome en Apple Safari browsers die HTTP/2 in actie tonen op https://example.com domein.
Chrome
Safari