Comment puis-je activer le HTTP/2 sur HAProxy?
Nous avons récemment changé de HTTP à HTTPS. Comme nous l'avons déjà déménagé à HTTPS, nous envisageons de déménager à l'adresse HTTP/2 pour obtenir des avantages de performance.
Comme expliqué ci-dessus que les demandes entre le navigateur et LB sont sécurisés (HTTPS), tandis que la communication entre la LB et le serveur d'application toujours à l'aide de HTTP
Qu'est-ce que la possibilité de permettre à l'adresse HTTP /2 avec la configuration actuelle? Pouvons-nous nous permettre de HTTP/2 entre le navigateur et le LB, tandis que la communication entre la LB et de l'application des serveurs de rester sur HTTP?
OriginalL'auteur ssharma | 2016-11-17
Vous devez vous connecter pour publier un commentaire.
HAProxy 1.8 supporte le protocole HTTP/2
De le 1.8 annonce:
Vous aurez besoin de la
h2
directive dans votrehaproxy.conf
. De CertSimple de HAProxy HTTP/2 et l'équilibrage de charge dynamique guide:Les anciennes versions de HAProxy
Les anciennes versions de HAProxy comme 1.6 et 1.7 uniquement compatible avec le pass-through HTTP/2 - c'est à dire, pour diriger la circulation sur un autre serveur d'application qui prend en charge le protocole HTTP/2. C'est beaucoup plus compliqué de voir d'autres réponses sur la façon de le faire. Pour mettre fin à HTTP/2 et lire le trafic sur HAProxy, vous aurez besoin d'HAProxy 1.8.
Fixe, merci @PaulLemke!
Juste une note rapide. La conversion de HTTP2 à HTTP1.1 a encore quelques questions. Pour notre HTTPS GZip POST, le Codage de Transfert (non inclus dans HTTP2) n'a pas été automatique converti à HTTP1.1 Et par conséquent, le corps ne lisent pas. Si quelqu'un a le même problème, essayez d'utiliser uniquement http 1.1. Il y a le protocole de Transfert-Encoding = bloc (même si c'est par défaut sur HTTP2). Donc si c'est fait manuellement sur HAProxy, cela fonctionne. Laisser le système de convertir automatiquement n'ajoute pas cet en-tête.
Ajouter un lien vers les HAProxy le bug que vous avez signalé
Je l'avoue, je n'ai pas déposé un rapport de bug à l'instant. (Pour être honnête je n'ai pas trouvé leur bugtracker page. Le Githup page n'offre pas de problèmes...)
OriginalL'auteur mikemaccana
haproxy n'a pas vraiment de support de http/2 encore
Le seul soutien qu'il a, est de détecter un http/2 la demande, et de passer le https /tcp443 flux tcp vers un serveur qui prend en charge le protocole https et http/2
ici est de quelqu'un d'autre guide
http://m12.io/blog/http-2-with-haproxy-and-nginx-guide
OriginalL'auteur Scott Farrell
Suivante devrait fonctionner sur votre équilibreur de charge si vous êtes en mesure d'exécuter certains
NginX
côtés avecHaProxy
.NginX
est (ab)est utilisé comme un pur terminaison SSL, pas comme un complet serveur web, donc pas de contenu est desservi par cetteNginX
.J'appelle cette idée après la célèbre photo de Munchhausen, tirant lui-même et le cheval d'un bourbier:
La Munchhausen Méthode
D'abord, faire un H2 de l'installation dans HaProxy comme dans la réponse de la Scott Farrell avec les réglages suivants:
Cette boucle de la
HTTP/2
connexion à votre loadbalancer machine et accepte la décodé demandes pour entrer dans l'équilibrage de la charge viahttp-lo
.Maintenant sur la LB en soi, commencer à
NginX
pour écouter sur le Port81
comme dans la configexemple de résilier le
HTTP/2
connexion proxy et de revenir à votre loadbalancer de nouveau.Dans NginX assurez-vous de:
Utilisation envoyez-proxy-protocole dans NginX
Résilier le SSL à l'aide de
HTTP/2
dansNginX
Proxy tout de manière transparente (aka. muet) retour à
HaProxy
port82
N'oubliez pas d'inclure le Client-IP via
X-Forwarded-For
en-tête de la requête proxy (je ne sais pas comment configurer NginX pour utiliser la fonction "Envoyer Proxy" Protocole sur les sortants des demandes de proxy).Noter que cette installation est principalement statique. L'évolution de la partie est sur tous les domaines et leur TLS-certs.
ASCII image de
HTTP/2
demande fluxOui, elle boucle 2 fois par HaProxy, mais grâce à la vitesse de HaProxy fonctionne, cela fonctionne aussi rapide que l'éclair.
Le réel inefficace quand il s'agit de décompresser le
HTTP/2
les en-têtes dans la plaineHTTP
en-têtes ..OriginalL'auteur Tino