Proxy direct et proxy inverse
Le glossaire de MDN distingue deux familles :
- le proxy direct gère les demandes depuis et vers n'importe où sur Internet, pour le compte de ceux qui passent par lui ;
- le proxy inverse prend des requêtes d'Internet et les transmet aux serveurs d'un réseau interne.
Le premier protège et filtre ceux qui naviguent. Le second protège et organise ceux qui publient.
À quoi sert un reverse proxy
- Servir plusieurs applications sur les mêmes ports. Un serveur n'a qu'un port 443. Le reverse proxy lit le nom demandé (app.exemple.fr, outils.exemple.fr) et envoie chaque visite vers la bonne application, qui écoute sur un port interne.
- Porter le HTTPS. Le certificat est posé et renouvelé sur le reverse proxy ; les applications derrière n'ont pas à s'en occuper.
- Cacher les applications. Seul le reverse proxy est joignable depuis Internet. Une base de données ou une interface d'administration restent sur le réseau interne.
- Répartir la charge. Le même service peut tourner en plusieurs exemplaires, et le reverse proxy distribue les requêtes entre eux.
- Ajouter des règles : redirections, en-têtes de sécurité, cache, limitation du nombre de requêtes.
Comment il transmet la requête
Avec nginx, par exemple, la directive proxy_pass indique l'adresse du service à joindre, selon la documentation du module proxy de nginx :
location / {
proxy_pass http://localhost:8000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
L'application derrière voit arriver la requête du reverse proxy, pas celle du visiteur. Pour connaître la vraie adresse du visiteur, elle lit des en-têtes comme X-Real-IP ou X-Forwarded-For. MDN prévient que ces en-têtes peuvent être falsifiés s'ils ne sont pas posés par un proxy de confiance : une application ne doit s'y fier que si elle n'est joignable qu'à travers lui.
Les outils les plus courants
| Outil | Ce qui le caractérise |
|---|---|
| nginx | serveur web et reverse proxy, réglé par fichiers |
| Caddy | obtient et renouvelle seul les certificats HTTPS |
| Traefik | se règle par les étiquettes des conteneurs Docker |
| Nginx Proxy Manager | une interface web au-dessus de nginx |
Sur un VPS qui fait tourner des conteneurs, Traefik et Nginx Proxy Manager sont les choix les plus fréquents : voir Traefik et Nginx Proxy Manager. Pour un certificat avec Caddy, voir Un certificat SSL sur son VPS.
Chez Hubspace
Vous en croisez déjà sans le savoir. Sur nos hébergements, nginx est placé devant Apache : il reçoit les visites et les transmet au serveur qui exécute PHP. Cloudflare, quand il est placé devant un site, joue lui aussi ce rôle à l'échelle d'Internet : voir Qu'est-ce que Cloudflare.
Sur nos VPS, le pare-feu n'ouvre que les ports 22, 80 et 443. Un reverse proxy est donc la façon naturelle de publier plusieurs applications Docker : lui seul écoute sur 80 et 443, et les applications restent fermées sur leurs ports internes. Les serveurs sont présentés sur la page des serveurs VPS.
Questions fréquentes
Un reverse proxy ralentit-il le site ?
Il ajoute une étape, mais elle se compte en millisecondes sur la même machine. Bien réglé, il peut même accélérer le site, en gardant en cache des réponses ou en compressant les pages.
Faut-il un reverse proxy pour une seule application ?
Ce n'est pas obligatoire, mais il reste utile pour porter le certificat HTTPS et ne pas exposer l'application directement. Sur un serveur où seuls 80 et 443 sont ouverts, c'est le moyen le plus simple de la rendre joignable.
Reverse proxy et load balancer, est-ce pareil ?
Un répartiteur de charge est un reverse proxy dont le rôle principal est de distribuer les requêtes entre plusieurs exemplaires d'un service. Beaucoup de reverse proxy savent le faire, nginx compris quand un nom correspond à plusieurs adresses.
Articles liés
- Qu'est-ce qu'un nom de domaine ? DéfinitionC'est quoi un nom de domaine ? L'adresse lisible d'un site, faite d'un nom et d'une extension, que l'on réserve chaque année chez un bureau d'enregistrement.
- Qu'est-ce qu'un hébergement web ? DéfinitionC'est quoi un hébergement web ? Un espace sur un serveur toujours allumé, où vivent les fichiers et la base d'un site, et souvent ses boîtes mail.
- Qu'est-ce qu'un VPS ? Le serveur privé virtuelC'est quoi un VPS ? Un serveur privé virtuel : une machine à vous, avec sa mémoire, son disque et un accès administrateur, à administrer vous-même.