Aller au contenu
medium

Reverse proxy : comprendre et choisir le bon outil

11 min de lecture

Un reverse proxy est le “portier” de votre infrastructure. Il se place entre vos utilisateurs et vos serveurs, et gère tout ce qui arrive avant que la requête n’atteigne votre application.

Les 3 bénéfices immédiats :

  1. Vos serveurs sont cachés — les utilisateurs ne connaissent que l’adresse du proxy, pas celle de vos backends
  2. Un seul point de configuration — certificats TLS, règles de sécurité, logs : tout est centralisé
  3. Haute disponibilité automatique — si un serveur tombe, le proxy redirige vers les autres

Le trajet d’une requête (ce qui se passe vraiment)

Section intitulée « Le trajet d’une requête (ce qui se passe vraiment) »

Quand un utilisateur tape https://app.example.com dans son navigateur, voici ce qui se passe :

Trajet d'une requête : Client → Reverse Proxy (TLS, règles, load balancing) → Backend, puis réponse

Étape par étape :

  1. Le client appelle https://app.example.com
  2. Le reverse proxy termine le TLS (déchiffre la connexion HTTPS)
  3. Il choisit un backend selon ses règles (load balancing + health checks)
  4. Il transmet la requête au backend sélectionné
  5. Le backend traite et renvoie la réponse
  6. Le proxy renvoie la réponse au client

Imaginons votre site avec 3 composants :

RequêteOù ça vaPourquoi
GET /api/usersBackend API (Node.js)Logique métier
GET /Frontend (React/Vue)Interface utilisateur
GET /static/logo.pngServeur de fichiers ou cachePerformance

Le reverse proxy lit l’URL et envoie chaque requête vers le bon serveur. Sans lui, vous auriez besoin de 3 domaines différents ou de tout mettre sur un seul serveur.

Un reverse proxy est un “portier” qui effectue 5 actions :

  1. Termine le HTTPS — Il déchiffre les connexions TLS. Vos backends peuvent tourner en HTTP simple (plus facile à gérer).

  2. Route les requêtes — Selon le chemin (/api), le domaine (api.example.com), ou un header, il envoie vers le bon backend.

  3. Répartit la charge — Il distribue les requêtes entre plusieurs serveurs (round-robin, moins de connexions, etc.).

  4. Vérifie la santé — Il teste régulièrement chaque backend. Si un serveur ne répond plus, il est retiré automatiquement.

  5. Protège l’accès — Rate limiting, blocage d’IPs, validation de headers. C’est votre première ligne de défense.

Reverse proxy vs Load balancer : quelle différence ?

Section intitulée « Reverse proxy vs Load balancer : quelle différence ? »

Ces deux termes sont souvent confondus. Clarifions :

ConceptCe qu’il faitExemples
Reverse proxyPoint d’entrée HTTP(S) : TLS, routage, headers, sécuritéNginx, Traefik, Apache
Load balancerRépartit le trafic entre plusieurs serveurs (L4 ou L7)HAProxy, AWS ALB, F5

En pratique : la plupart des outils font les deux. HAProxy est un excellent load balancer qui fait aussi reverse proxy. Nginx est un serveur web + reverse proxy + load balancer. Traefik combine tout dans un contexte cloud-native.

1. Single Point of Failure Votre reverse proxy devient critique. Prévoyez :

  • Un second proxy en failover (keepalived, VRRP)
  • Ou un load balancer cloud devant vos proxies

2. Headers X-Forwarded oubliés Vos backends voient l’IP du proxy, pas celle du client. Configurez :

  • X-Forwarded-For pour l’IP réelle
  • X-Forwarded-Proto pour le schéma (http/https)

3. Timeouts mal configurés

  • Timeout trop court → erreurs 504 intempestives
  • Timeout trop long → connexions bloquées
  • Règle : proxy timeout > backend timeout

4. Buffer size insuffisant Les gros uploads échouent si les buffers sont trop petits. Surveillez les erreurs 413/502.

5. Host header non validé Sans whitelist, un attaquant peut manipuler le header Host. Toujours valider les hosts autorisés.

Répondez à ces questions dans l’ordre. Dès que vous avez une réponse, vous avez votre outil :

QuestionSi oui →
1. Kubernetes ou Docker avec découverte auto ?Traefik — config dynamique par labels/annotations
2. Load balancing L4/L7 critique + health checks avancés ?HAProxy — conçu pour ça, très stable
3. Servir du web + cache + reverse proxy classique ?Nginx — le standard, cache intégré
4. HTTPS auto + config minimaliste ?Caddy — Let’s Encrypt natif, Caddyfile simple
5. Application legacy / modules PHP ?Apache — écosystème de modules
Votre infrastructure utilise Kubernetes ?
├── Oui → Traefik (IngressRoute) ou Nginx Ingress
└── Non → Suite...
└── Vous utilisez Docker avec déploiements fréquents ?
├── Oui → Traefik (découverte automatique)
└── Non → Suite...
└── Vous avez besoin de load balancing L4/L7 avancé ?
├── Oui → HAProxy (health checks précis, runtime API)
└── Non → Suite...
└── Vous voulez servir du contenu + cache ?
├── Oui → Nginx (web server + proxy + cache)
└── Non → Caddy (HTTPS auto, config minimale)

Ces outils n’appartiennent pas à la même catégorie. Comprendre leur “famille” évite de croire qu’ils font tous pareil :

FamilleOutilsSpécialité
Load balancer L4/L7HAProxyRépartition de charge, haute dispo, checks avancés
Edge proxy cloud-nativeTraefikDécouverte de services, config dynamique, conteneurs
Serveur web + reverse proxyNginx, Apache, CaddyServir du contenu statique + proxy vers backends
Data-plane / Service meshEnvoyProxy L7 avancé à grande échelle (via Istio)

Besoin : servir du contenu avec cache, gérer les certificats Let’s Encrypt, configuration simple.

Solutions recommandées :

  • Nginx — Standard de l’industrie, documentation abondante, cache intégré
  • Caddy — HTTPS automatique, configuration minimale, idéal pour débuter

Besoin : haute disponibilité, health checks précis, latence minimale, sessions persistantes.

Solutions recommandées :

Besoin : découverte automatique des conteneurs, configuration par labels, déploiements fréquents.

Solution recommandée :

  • Traefik — Détection automatique, configuration dynamique, Let’s Encrypt intégré

Voir aussi : Traefik avec Docker

Besoin : Ingress Controller, intégration native, gestion des namespaces.

Solutions recommandées :

  • Traefik — IngressRoute CRD, middlewares intégrés → voir Traefik sur Kubernetes
  • Nginx Ingress — Le plus répandu, configuration via annotations

Ce tableau compare les modèles d’exploitation, pas les performances (suffisantes pour la majorité des workloads) :

CritèreHAProxyTraefikNginxApacheCaddy
ModèleLB + proxy L4/L7Edge proxy cloud-nativeServeur web + proxyServeur web legacyServeur web moderne
ConfigurationFichier + runtime APIDynamique (providers)FichierFichierCaddyfile
Découverte de servicesNonDocker, K8s, ConsulNonNonNon
TLS / ACMEÀ intégrerIntégréÀ intégrerÀ intégrerIntégré
Cache webPas l’objectifLimité (plugins)FortOKLimité
L4 (TCP/UDP)ExcellentBonBonLimitéLimité
Quand le choisirAPI critiques, LBConteneurs, K8sWeb + cacheLegacySimplicité

Voici une architecture production classique :

Architecture reverse proxy production : Internet, Load Balancer Cloud, HAProxy Primary/Standby et Traefik K8s, backends VM et Pods

  1. Un reverse proxy est le point d’entrée unique de votre infrastructure — TLS, routage, sécurité centralisés.

  2. Il fait 5 choses : termine le TLS, route, répartit, vérifie, protège.

  3. Choisissez selon votre écosystème : Traefik pour conteneurs, HAProxy pour LB critique, Nginx pour web+cache, Caddy pour simplicité.

  4. Les health checks sont essentiels — ils retirent automatiquement les backends défaillants.

  5. Prévoyez la haute disponibilité du proxy lui-même — il devient votre nouveau point de défaillance unique.

Ce site vous est utile ?

Sachez que moins de 1% des lecteurs soutiennent ce site.

Je maintiens +700 guides gratuits, sans pub ni tracing. Aujourd'hui, ce site ne couvre même pas mes frais d'hébergement, d'électricité, de matériel, de logiciels, mais surtout de cafés.

Un soutien régulier, même symbolique, m'aide à garder ces ressources gratuites et à continuer de produire des guides de qualité. Merci pour votre appui.