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

HTTP/2 in de Chrome Browser

Safari

HTTP/2 in de Safari Browser

Links