Reverse proxy
Qu'est-ce qu'un reverse proxy ?
Un reverse proxy (ou proxy inverse) est un serveur placé entre les utilisateurs et un ou plusieurs serveurs d'application. Les visiteurs envoient leurs requêtes au proxy, qui transmet chacune au serveur approprié et renvoie la réponse comme si elle venait d'une origine unique. Le client ne dialogue jamais directement avec les serveurs d'application, qui restent cachés derrière.
Comment fonctionne un reverse proxy
Le flux comporte quatre étapes : le navigateur résout le domaine via le DNS vers l'adresse du proxy, le proxy reçoit la requête, il choisit un serveur selon des règles (chemin, hôte, en-têtes, charge), puis il relaie la réponse, parfois après l'avoir modifiée. Une configuration Nginx minimale ressemble à ceci :
server { listen 443 ssl; server_name example.com; location /api/ { proxy_pass http://127.0.0.1:3000; } }
Ici, chaque requête vers /api/ est transmise à une application qui écoute sur le port 3000, tandis que le reste du site peut être servi ailleurs.
À quoi sert un reverse proxy
- Répartition de charge : répartir le trafic entre plusieurs serveurs pour éviter la surcharge (voir load balancing).
- Terminaison TLS : gérer le HTTPS et le certificat SSL à un seul endroit plutôt que sur chaque serveur.
- Cache et compression : servir les réponses fréquentes sans solliciter le serveur d'application.
- Sécurité : masquer les serveurs internes, filtrer les requêtes malveillantes et appliquer du rate limiting.
- Routage : exposer plusieurs services, par exemple des microservices, sous un même domaine.
Reverse proxy, proxy direct et CDN
| Critère | Reverse proxy | Proxy direct (forward) | CDN |
|---|---|---|---|
| Agit pour le compte de | Les serveurs | Les clients | Les serveurs, en périphérie |
| Position type | Devant les serveurs d'application | Devant les utilisateurs ou un réseau d'entreprise | Distribué dans de nombreuses zones |
| Objectif principal | Routage, sécurité, performance | Anonymat, filtrage, contrôle d'accès | Livraison rapide près de l'utilisateur |
| Exemples | Nginx, HAProxy, Traefik | Passerelle web d'entreprise | Cloudflare, Fastly |
Un CDN est en pratique un réseau de reverse proxies répartis dans le monde, ce qui explique que les deux notions se recoupent.
Bonnes pratiques et pièges
- Transmettre l'IP d'origine du client avec des en-têtes comme
X-Forwarded-For, sinon le serveur d'application ne voit que le proxy. - Définir des délais d'attente raisonnables et des contrôles de santé pour qu'un serveur défaillant sorte de la rotation.
- Garder des en-têtes HTTP de sécurité cohérents au niveau du proxy.
- Éviter que le proxy devienne un point de défaillance unique : prévoir au moins deux instances pour les applications critiques.
Reverse proxy et SEO
Un reverse proxy permet de servir un blog ou une application dans un sous-dossier du domaine principal plutôt que sur un sous-domaine, ce qui concentre l'autorité sur un seul hôte. Il doit préserver les URL canoniques, les codes de statut et les en-têtes, faute de quoi les moteurs peuvent indexer la mauvaise adresse.
Le reverse proxy chez BeBranded
Sur nos projets d'applications web, nous plaçons un reverse proxy ou une couche edge devant l'application pour gérer le HTTPS, le cache et le routage, afin que le produit reste rapide et sécurisé quand le trafic augmente. Découvrez notre service d'applications web.