7 votes

Activation de http2 mais service toujours sur http1.1

Pour activer HTTP/2 sur mon serveur 16.04, j'ai suivi les étapes suivantes ce guide comme recommandé par Google, mais pour une raison quelconque, mon site est toujours servi par HTTP/1.1. J'ai vérifié et revérifié que tout était correct, redémarré le service (et le serveur !) plusieurs fois, mais en vain.

  • http2 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)
  • J'ai redémarré le service et le serveur.

Est-ce que j'ai manqué quelque chose ?

EDITAR:

J'ai juste couru curl -I -k --http2 https://framework.jacob.rocks/ et a reçu ce qui suit...

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

7voto

user370389 Points 1

J'ai trouvé la solution, apparemment c'était juste un problème avec mpm_prefork qui ne supporte pas HTTP/2 à partir d'Apache 2.4.27 . J'ai suivi ce guide et cela fonctionne maintenant !

1voto

jmary Points 616

Apache2 n'est pas compilé avec le support http2 par défaut sur ubuntu 16.04.

Vous devez donc soit installer une version précompilée, par exemple en faisant ceci :

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

Ensuite, installez certains 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

A ce stade, vous pourriez installer les deb générés, mais ils pourraient être écrasés par une mise à jour de sécurité plus tard, donc nous allons juste copier le module http2 qui a été 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/

Ensuite, créez 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

Ensuite, activez le module

a2enmod http2

Puis redémarrez apache

service apache2 restart

Maintenant, vous devriez être prêt à partir.

0voto

S K R Points 101

Si vous avez activé SSL pour votre site, vous devez définir

Protocols h2 http/1.1

dans les deux fichiers v-host et ssl conf, sinon cela ne fonctionnera pas.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X