J'utilise nginx en tant que proxy reverse-ssl devant un serveur web backend capable de faire HTTP/2.0.
J'ai remarqué que nginx proxy les demandes au serveur principal via HTTP/1.1 plutôt que HTTP/2.0. Est-il possible de dire à nginx d'utiliser une connexion HTTP/2.0 non chiffrée à la place? Cela augmenterait-il les performances?
Trouvé ceci: https://trac.nginx.org/nginx/ticket/92
Il n'est pas prévu d'implémenter la prise en charge HTTP/2 dans le module proxy dans un avenir prévisible
Extrait d'un mail référencé dans le ticket:
Cela n'a presque aucun sens de l'implémenter, car le principal avantage de HTTP/2 est qu'il permet de multiplexer de nombreuses requêtes au sein d'une même connexion, supprimant ainsi [presque] la limite du nombre de requêtes simultanées - et il n'y a pas de telle limite lorsque vous parlez à vos propres backends. De plus, les choses peuvent même empirer lors de l'utilisation de HTTP/2 pour les backends, en raison de l'utilisation d'une seule connexion TCP au lieu de plusieurs).
Malheureusement, nginx ne prend pas en charge le proxy vers un serveur backend http/2, référencé depuis https://www.nginx.com/blog/http2-module-nginx/#QandA
Q: Allez-vous également prendre en charge HTTP/2 du côté amont ou prendre en charge uniquement HTTP/2 du côté client?
R: Pour le moment, nous ne prenons en charge que HTTP/2 côté client. Vous ne pouvez pas configurer HTTP/2 avec proxy_pass. [Éditeur - Dans la version originale de cet article, cette phrase a été incorrectement transcrite comme "Vous pouvez configurer HTTP/2 avec proxy_pass". Nous nous excusons pour toute confusion que cela pourrait avoir causée.]
Mais quel est l'intérêt de HTTP/2 côté backend? Parce que, comme vous pouvez le voir sur les benchmarks, HTTP/2 ne présente pas beaucoup d’avantages pour les réseaux à faible latence tels que les connexions en amont.
De plus, dans NGINX, vous avez le module keepalive et vous pouvez configurer un cache keepalive. Le principal avantage en termes de performances de HTTP/2 est d’éliminer les prises de contact supplémentaires, mais si vous le faites déjà avec un cache keepalive, vous n’avez pas besoin de HTTP/2 en amont.