Fondamentaux
Reverse proxy et load balancer
Un reverse proxy reçoit les requêtes à la place d'une application et les transmet au bon service interne. Un load balancer répartit le trafic entre plusieurs instances. Ces composants sont essentiels en production.
Reverse proxy
Internet
│
Reverse proxy
│
Application interne
Exemples :
- Nginx
- Apache
- HAProxy
- Traefik
- Caddy
Un reverse proxy peut gérer TLS, les headers, les logs, la compression, le cache, les limites de requêtes et certaines règles de filtrage.
Load balancer
Un load balancer répartit les requêtes vers plusieurs serveurs.
Client
│
Load balancer
├── App 1
├── App 2
└── App 3
Cela améliore la disponibilité, la performance et les déploiements progressifs.
TLS termination
TLS termination signifie que le proxy termine la connexion HTTPS, puis transmet la requête à l'application.
Client -- HTTPS --> Proxy -- HTTP ou HTTPS --> Application
Si le trafic interne est en HTTP, il faut comprendre et accepter ce risque selon le contexte réseau. Dans les environnements sensibles, on chiffre aussi le trafic interne.
Headers importants
| Header | Rôle |
|---|---|
Host | Domaine demandé |
X-Real-IP | IP originale du client |
X-Forwarded-For | Chaîne d'IP traversées |
X-Forwarded-Proto | Protocole original |
Forwarded | Standard plus général |
Une application derrière proxy doit être configurée pour faire confiance uniquement aux proxies légitimes.
Risques fréquents
- mauvaise gestion de l'IP client
- headers
X-Forwarded-*acceptés depuis Internet - redirections HTTPS incorrectes
- limite de taille absente
- timeout trop long
- application interne exposée directement
- logs insuffisants
- configuration TLS trop faible
Bonnes pratiques
- exposer seulement le proxy sur Internet
- filtrer l'accès aux applications internes
- définir des timeouts
- limiter la taille des requêtes
- journaliser les accès
- configurer les headers de proxy proprement
- activer HSTS lorsque HTTPS est stable
- tester les redirections HTTP vers HTTPS
À retenir
Un reverse proxy est une frontière. Sa configuration influence la sécurité, les logs, les redirections, TLS et la façon dont l'application voit les clients.
