web-dev-qa-db-fra.com

Activer http 2 mais toujours au-dessus de http 1.1

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

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
1
JacobTheDev

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!

3
JacobTheDev

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.

1
jmary

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.

0
S K R