Pour activer HTTP/2 sur mon serveur 16.04, j'ai suivi ce guide comme recommandé par Google, mais pour une raison quelconque, mon site est toujours en cours de traitement via HTTP/1.1. J'ai vérifié et vérifié deux fois que tout était correct, redémarré le service (et le serveur!) À plusieurs reprises, sans résultat.
http2
mod est activé dans Apache2.Protocols h2 h2c http/1.1
est ajouté au fichier de configuration de mon site (et vient d'être testé dans mon Apache.conf)Est-ce que je manque quelque chose?
MODIFIER:
Je viens de lancer curl -I -k --http2 https://framework.jacob.rocks/
et j'ai reçu le message suivant ...
HTTP/1.1 200 OK
Date: Thu, 20 Jul 2017 17:12:52 GMT
Server: Apache/2.4.27 (Ubuntu)
Upgrade: h2,h2c
Connection: Upgrade
Link: <https://framework.jacob.rocks/wp-json/>; rel="https://api.w.org/"
Link: <https://framework.jacob.rocks/>; rel=shortlink
X-TEC-API-VERSION: v1
X-TEC-API-ROOT: https://framework.jacob.rocks/wp-json/tribe/events/v1/
X-TEC-API-Origin: https://framework.jacob.rocks
Content-Type: text/html; charset=UTF-8
Compris, c'était apparemment un problème avec le module mpm_prefork
qui ne prend pas en charge HTTP/2 à partir d'Apache 2.4.27
. J'ai suivi ce guide et cela fonctionne maintenant!
Apache2 n'est pas compilé avec le support http2 par défaut sur Ubuntu 16.04.
Donc vous devez soit installer une version précompilée, par exemple:
Sudo add-apt-repository ppa:ondrej/Apache2
Sudo apt-get update
Sudo apt-get dist-upgrade
Ou le faire vous-même avec la méthode suivante:
Vérifiez que vous avez ces lignes dans /etc/apt/sources.list:
deb-src http://archive.ubuntu.com/ubuntu/ xenial main universe restricted multiverse
deb-src http://security.ubuntu.com/ubuntu xenial-security main universe restricted multiverse
deb-src http://archive.ubuntu.com/ubuntu/ xenial-updates main universe restricted multiverse
Sinon, ajoutez-les avec:
Sudo echo 'deb-src http://archive.ubuntu.com/ubuntu/ xenial main universe restricted multiverse
deb-src http://security.ubuntu.com/ubuntu xenial-security main universe restricted multiverse
deb-src http://archive.ubuntu.com/ubuntu/ xenial-updates main universe restricted multiverse' >> /etc/apt/sources.list
Puis installez quelques paquets nécessaires (libnghttp2-dev est nécessaire pour apporter le support http2):
Sudo apt-get install curl devscripts build-essential libnghttp2-dev
Sudo apt-get build-dep Apache2
Sudo apt-get source Apache2
Puis compiler:
cd Apache-2.4.18
Sudo su
./debian/rules binary
À ce stade, vous pouvez installer le fichier deb généré, mais il se peut qu’il soit remplacé ultérieurement par une mise à jour de sécurité. Nous allons donc copier le module http2 généré et créer un fichier pour pouvoir l’activer:
cp debian/Apache2-bin/usr/lib/Apache2/modules/mod_http2.so /usr/lib/Apache2/modules/
Créez ensuite le fichier http2.load pour charger le module.
echo 'LoadModule http2_module /usr/lib/Apache2/modules/mod_http2.so
<IfModule http2_module>
LogLevel http2:info
</IfModule>' > /etc/Apache2/mods-available/http2.load
Puis activer le module
a2enmod http2
Puis redémarrez Apache
service Apache2 restart
Maintenant, vous devriez être prêt à partir.
Si vous avez activé SSL pour votre site, vous devez définir
Protocols h2 http/1.1
dans les fichiers v-Host et ssl conf, sinon cela ne fonctionnera pas.