mod_proxy_http2
Support de HTTP/2 pour mod_proxy
Experimental
mod_proxy_http2.c
proxy_http2_module
Disponible à partir de la version 2.4.19 du serveur HTTP Apache

mod_proxy_http2 ne supporte que HTTP/2 et ne permet pas de rétrogradation vers HTTP/1.1. Cela signifie que le serveur d'arrière-plan doit supporter HTTP/2 car HTTP/1.1 ne pourra alors pas être utilisé.

Ce module nécessite la présence de mod_proxy ; pour pouvoir traiter les requêtes mandatées HTTP/2, mod_proxy et mod_proxy_http2 doivent donc être chargés par le serveur.

mod_proxy_http2 travaille avec des requêtes entrantes en HTTP/1.1 ou HTTP/2. Dans les deux cas, les requêtes vers le même serveur d'arrière-plan sont envoyées via une seule connexion TCP, dans la mesure du possible (autrement dit lorsque la connexion peut être réutilisée).

Avertissement : il ne sera effectué aucune tentative de fusion de plusieurs requêtes entrantes HTTP/1 (devant être mandatées vers le même serveur d'arrière-plan) vers des flux HTTP/2 appartenant à la même requête HTTP/2. Chaque requête HTTP/1 entrante sera mandatée vers le serveur d'arrière-plan en utilisant une requête HTTP/2 séparée (tout en réutilisant si possible la même connexion TCP).

Ce module s'appuie sur libnghttp2 pour fournir le moteur central http/2.

# Avertissement

Ce module en est au stade expérimental. Ses comportement, directives et valeurs par défauts sont donc susceptibles de modifications d'une version à l'autre plus fréquentes que pour les autres modules. A ce titre, il est fortement conseillé aux utilisateurs de consulter le fichier "CHANGES" pour prendre connaissance de ces modifications.

# Avertissement

N'activez pas le mandatement avant d'avoir sécurisé votre serveur. Les serveurs mandataires ouverts sont dangereux non seulement pour votre propre réseau, mais aussi pour l'Internet au sens large.

mod_http2
mod_proxy
mod_proxy_connect

# Exemples de base

Les exemples ci-dessous montrent comment configurer HTTP/2 pour des connexions d'arrière-plan vers un mandataire inverse.

## HTTP/2 (TLS)

ProxyPass "/app" "h2://app.example.com" ProxyPassReverse "/app" "https://app.example.com"

## HTTP/2 (non sécurisé)

ProxyPass "/app" "h2c://app.example.com" ProxyPassReverse "/app" "http://app.example.com"

Pour mandater en inverse les protocoles `h2` ou `h2c`, on utilise la directive ProxyPassReverse avec les schèmes habituels `https` et respectivement `http` qui sont connus et utilisés par l'agent utilisateur.

# Informations sur les requêtes

mod_proxy_http fournit les informations sur les requêtes suivantes pour enregistrement dans les journaux en utilisant le format `%{VARNAME}n` avec les directives LogFormat ou ErrorLogFormat :

proxy-source-port
  Le numéro de port local utilisé pour la connexion vers le serveur d'arrière-plan.
proxy-status
  Le statut HTTP/2 en provenance du serveur d'arrière-plan.

# HTTP/2 PUSH

Ce module ne supporte pas la fonctionnalité HTTP/2 PUSH. Les serveurs d'arrière-plan qui veulent indiquer des ressources à précharger doivent envoyer les en-têtes `Link` appropriés.

En cas de besoin, il peuvent le faire en utilisant les réponses intermédiaires `"103 Early Hints"` comme indiqué dans la RFC 8297, ce qui fournira les meilleures performances. Si le client comprend aussi le langage HTTP/2, il en résultera un PUSH de la part de httpd vers le celui-ci ou un simple transfert de la réponse 103.