Proxy apache

De wiki.nexiat.fr
Aller à la navigation Aller à la recherche
Fiche express
Domaine Reverse proxy avec Apache
Modules requis mod_proxy, mod_proxy_http
Directives clés ProxyPass, ProxyPassReverse
Voir aussi Modules apache · Vhosts · Php-fpm

Apache peut faire office de reverse proxy : recevoir les requêtes HTTP sur un vhost public et les retransmettre vers un service backend écoutant sur un autre port (application applicative, service interne non exposé directement, etc.), via le module mod_proxy et ses extensions (mod_proxy_http pour HTTP, mod_proxy_ajp pour AJP vers Tomcat...).

Activer les modules

a2enmod proxy
a2enmod proxy_http

Exemple : vhost en reverse proxy

# /etc/apache2/sites-available/dev.conf
<VirtualHost *:80>
    ServerName dev.example.local

    ProxyPass / http://127.0.0.1:8181/
    ProxyPassReverse / http://127.0.0.1:8181/
    ProxyPreserveHost On
</VirtualHost>
a2ensite dev.conf
systemctl restart apache2
  • ProxyPass — transmet les requêtes reçues sur / vers le backend.
  • ProxyPassReverse — réécrit les en-têtes de redirection renvoyés par le backend
 (Location, Content-Location...) pour qu'ils pointent vers le vhost
 public plutôt que vers l'adresse interne du backend.
  • ProxyPreserveHost On — transmet l'en-tête Host original du client
 au backend, plutôt que celui de l'URL de destination — indispensable si le backend fait du
 routage par nom de domaine.

Voir aussi

  • Modules apache — gestion des modules
  • Vhosts — configuration générale des hôtes virtuels
  • Php-fpm — cas d'usage fréquent en backend derrière un proxy