In deze tutorial wordt uitgelegd hoe je voor je websites HTTP2 kunt installeren en gebruiken. Omdat HTTP2 alleen werkt met HTTPS websites is het wel noodzakelijk dat je een website hebt die gebruik maakt van een SSL certificaat. Als je dit nog niet hebt gedaan kun je een SSL certificaat kopen en installeren of gebruik maken van de Let’s Encrypt dienst die nu standaard in DirectAdmin zit. Om gebruik te maken van Let’s Encrypt, zie deze tutorial.

Benodigdheden:

  • DirectAdmin installatie met laatste CustomBuild versie
  • Nginx als webserver (minimaal de laatste stable versie (1.14.1), aanrader is om de laatste mainline branch (1.15.6) te gebruiken, zie stap 2)
  • Website(s) met een SSL certificaat

Let op: Maak altijd een snapshot en/of backup van je systeem voordat je de software gaat upgraden! Zo kun je altijd terugvallen op een werkende configuratie mocht er iets fout gaan.

Tutorial voor het laatst bijgewerkt op 9 november 2018.


DirectAdmin v1.52.0 of hoger

Alle onderstaande stappen (onder de volgende streep) hoef je alleen uit te voeren als je DirectAdmin nog niet hebt bijgewerkt of niet kunt bijwerken naar versie > 1.52.0. In deze nieuwe versie kun je nog eenvoudiger overal HTTP/2 inschakelen door het volgende uit te voeren;

  • Plaats http2=1 in directadmin.conf
  • Doe nu een ./build rewrite_confs in de custom build folder. Als je je systeem helemaal hebt bijgewerkt en OpenSSL 1.0.2 gebruikt (dit kun je controleren met nginx -V) staat HTTP/2 nu overal ingeschakeld!

DirectAdmin v1.51.2 of lager

1. HTTP2 module compilen in Nginx

Standaard zit de HTTP2 module niet gecompileerd in Nginx. Gelukkig is dit vrij eenvoudig! Voer de volgende commando’s uit om een custom configure bestand aan te maken voor Nginx.

cd /usr/local/directadmin/custombuild/custom/
mkdir nginx
cp /usr/local/directadmin/custombuild/configure/nginx/configure.nginx /usr/local/directadmin/custombuild/custom/nginx/configure.nginx
cd nginx
nano configure.nginx

Plak nu de volgende regel in dit custom configure bestand:

"--with-http_v2_module" \

Dit kun je het beste op een van de laatste regels plakken, zodat de regels goed worden afgesloten met de \ aan het einde. Sla het bestand nu op.

Als je nu in de volgende stap Nginx opnieuw compileert wordt dit configure bestand gebruikt en wordt de HTTP2 module in Nginx gecompileerd.

2. Nginx Mainline of Stable?

HTTP/2 is inmiddels ook te gebruiken in de stable-branch van Nginx. Omdat de stable-branch minder vaak wordt bijgewerkt dan de mainline-branch wordt er aangeraden om met HTTP/2 de mainline-branch te gebruiken. Elke paar weken verschijnt er een nieuwe versie met vaak veel verbeteringen / bug fixes.

Voor meer informatie over de verschillende branches en de roadmap van Nginx, zie deze link.

Een nadeel is dat CustomBuild alleen de stable-branch ondersteunt. Als je de mainline-branch in plaats van de stable-branch wil gebruiken moet je de onderstaande stappen uitvoeren:

cd /usr/local/directadmin/custombuild
nano custom_versions.txt

Plaats in dit bestand het volgende:

nginx:1.15.6:

Op het moment van schrijven is de bovenstaande versie de nieuwste versie. Kijk altijd op de website van nginx voordat je dit overneemt en gebruik de laatste versie!

Nu moet je handmatig de laatste mainline versie van de website downloaden:

wget https://nginx.org/download/nginx-1.15.6.tar.gz

Nu je de laatste versie hebt gedownload is het tijd om de versie te installeren:

./build update
./build versions
(controleer nu of de laatste nginx versie als update wordt aangegeven)
./build nginx

Controleer na het builden of nginx correct draait en of de laatste versie geïnstalleerd is.

systemctl status nginx.service
nginx -v

Let wel op: CustomBuild houd nu niet meer bij wanneer er een update is voor de mainline-branch. Bezoek dus regelmatig de website van nginx en houd in de gaten of er een update beschikbaar is. Als dit het geval is hoef je alleen maar het versienummer in custom_versions.txt te verhogen en de tar.gz downloaden. Hierna kun je nginx weer opnieuw builden met de laatste versie. Als je terug wilt naar de stable-branch kun je de versie uit custom_versions.txt verwijderen en dan wordt na een ./build update de stable branch weer als “update” aangegeven.

3. Custom nginx templates aanmaken in DirectAdmin

Nu je de laatste versie van Nginx hebt geïnstalleerd met daarin de http2 module is het tijd om http/2 aan te zetten voor elke HTTPS website. Het aanzetten van http/2 is vrij simpel! Het enige wat je daarvoor moet doen is om http2 achter elk IPadres te plaatsen in de nginx config van elke website. Dit kun je handmatig doen voor elke website maar het is natuurlijk makkelijker om dit voor elke website automatisch te doen door gebruik te maken van custom templates. Doe hiervoor het volgende;

cd /usr/local/directadmin/data/templates/
cp nginx_server_secure.conf custom/.
cd custom
nano nginx_server_secure.conf

Zoek nu naar LISTEN & MULTI_IP en verander deze waardes zodat het eruit ziet zoals het volgende:

listen |IP|:|PORT_443| ssl http2;

Om nu ook voor IPv6 verbindingen http2 in te schakelen zorg ervoor dat MULTI_IP eruit ziet zoals het volgende:

|$/usr/local/bin/php
<?php
$data = <<<END
|MULTI_IP|
END;
$data = str_replace("ssl;", "ssl http2;", $data);
echo  $data;
?>
DONE|

Dit zorgt ervoor dat alle IPv6 adressen die gekoppeld zijn aan de website ook gebruik maken van http2. Sla dit bestand op en voer nu een config rewrite uit:

cd /usr/local/directadmin/custombuild
./build rewrite_confs

Alle nginx configs worden nu herschreven en de custom template die je net hebt aangemaakt wordt nu gebruikt. Als alles is goed gegaan dan gebruiken je HTTPS websites nu HTTP2!

4. Testen of HTTP2 gebruikt wordt

Er zijn verschillende manieren om te controleren of HTTP2 correct is geïnstalleerd en ook gebruikt wordt. Dit kun je doen op de website van SSLLabs. Vul daar je website in en wacht 1-2 minuten tot de test is voltooid. Scroll nu naar onderen naar de waarde ALPN & NPN.

Als daar h2 http1/1 staat vermeld dan is HTTP2 correct geïnstalleerd!

Een tweede manier om te controleren of de configs goed zijn herschreven is om de configs te bekijken. Deze zijn op de volgende locatie te vinden:

cd /usr/local/directadmin/data/users/*user*/
cat nginx.conf

Zoek nu naar de IPadressen achter LISTEN. Als daar inderdaad http2 achter staat zijn de configs goed herschreven en wordt er gebruik gemaakt van http2.

Als je naar aanleiding van deze tutorial vragen hebt kun je altijd contact opnemen. Wij kunnen dit voor je verzorgen.