4.3 · Réseaux avancés et reverse proxy

Niveau 4 · Registres, fiabilité & CI

4.3Réseaux avancés et reverse proxy

Objectif : Exposer plusieurs services derrière un point d'entrée unique propre.
Temps estimé : 13 min · lecture autonome · Si vous n'avez que 5 min : lisez « L'essentiel en 30s » + le schéma.

L'essentiel en 30 secondes

  • On segmente par fonction : un réseau frontal (proxy vers applications) et un réseau backend (applications vers bases) — la base, cantonnée au backend, reste inatteignable directement même si le proxy est compromis.
  • Un seul port publié, tout le reste routé : le reverse proxy (frontal) est le seul publié et route par nom d'hôte — les applications ne font qu'exposer en interne et sont jointes par leurs noms.
  • Réflexe d'Idir : ajouter un service = une entrée de routage, zéro port supplémentaire — config du proxy montée en lecture seule.

Mini-cas filé — Idir range les ports en pagaille derrière un frontal

Idir, devops junior à Alger, gère deux applications qui publient chacune leur port : les URL sont illisibles et la base est joignable depuis le réseau frontal. Il crée deux réseaux (frontal et backend), ne publie que le port du proxy, route par noms d'hôtes et cantonne la base au backend. Troisième jalon du fil rouge : un point d'entrée unique, des services segmentés, zéro port en pagaille.

Suite des cas 4.1-4.2 — les services fiabilisés d'Idir sont maintenant exposés proprement.

1. Segmenter : un réseau par fonction

Au-delà d'un réseau unique, on segmente : frontal (proxy vers applications) et backend (applications vers bases). Un service appartient à plusieurs réseaux si besoin ; une base n'est que sur backend : même compromise du proxy, elle reste inatteignable directement.

La segmentation, c'est de l'isolation concrète : chaque réseau ne voit que ce qu'il doit voir. Idir y place chaque service selon ce qu'il doit joindre — et rien d'autre.

2. Le reverse proxy : un port pour tous

Traefik ou Nginx en frontal : seul son port 80/443 est publié, il route par nom d'hôte (chaque hôte vers son service). Les applications ne publient plus rien : elles exposent en interne et le proxy les joint par noms. Un point d'entrée, N services — ajouter une application, c'est une entrée de routage.

Nginx (config explicite, parfait pour apprendre) et Traefik (découverte automatique, idéal quand les services bougent) appliquent le même schéma : Idir commence simple avec une config explicite.

3. En local : noms propres, futurs certificats

En développement, on déclare les hôtes dans le fichier hosts (chaque nom vers la machine locale) ; en production, le DNS + TLS chiffrent le trafic. Retenez le schéma : un seul publié, tout le reste routé.

Et la config du proxy se monte en lecture seule : le conteneur la lit sans pouvoir la réécrire.

Erreur d'interprétation fréquente : « Chaque application doit publier son port, et la base peut rester sur le réseau frontal pour simplifier ». Non. Publier chaque application, c'est des ports en pagaille et autant de surfaces exposées ; une base sur le frontal est joignable directement depuis l'entrée. Un seul publié (le proxy), routage par hôtes, base cantonnée au backend : c'est ce trio qui fait un frontal propre.
Exposer derrière un frontal unique Un publié, le reste routé et segmenté Réseaux segmentés Frontalet backend séparésProxy seul publié Portunique en entréeRoutage par hôte Chaque nomvers son serviceBase cantonnée Backend seul,config en lecture seule
Un publié, le reste routé et segmenté
Version texte du schéma (SEO / lecteurs d'écran / traduction) : 1) Idir crée deux réseaux : frontal (proxy vers applications) et backend (applications vers bases). 2) Il lance ses applications non publiées sur le frontal et cantonne la base au backend. 3) Il publie uniquement le port du proxy, qui route par noms d'hôtes avec une config montée en lecture seule. 4) Il teste chaque hôte, puis vérifie qu'une base reste injoignable depuis le frontal. Leçon : segmenter, publier un seul point, router par noms.

🔎 Exemple concret — 🔎 Exemple concret — Deux apps derrière Nginx

Le frontal d'Idir : seul le proxy publie le port 80.

services:
  proxy:
    image: nginx:1.27
    ports: ["80:80"]
    volumes: [./proxy.conf:/etc/nginx/conf.d/default.conf:ro]
    networks: [frontal]
  app1:
    image: nginx:1.27
    networks: [frontal]
  app2:
    image: nginx:1.27
    networks: [frontal]
networks:
  frontal:
  backend:

Lecture : seul le proxy publie le port 80 ; les applications ne sont visibles que par lui.

Leçon : ajouter une troisième application = une entrée de routage, zéro port supplémentaire.

Vocabulaire de la section

Reverse proxy
Frontal qui reçoit les requêtes et les ROUTE vers les bons services selon les noms d'hôtes.

Exemple simple : Le proxy d'Idir envoie chaque hôte vers son application.

Ce que ce n'est pas : une publication de chaque port d'application vers l'extérieur.

Réflexe : plusieurs services, un seul port : poser un frontal.

Segmentation
Découper en RÉSEAUX PAR FONCTION (frontal, backend) pour isoler les flux.

Exemple simple : Idir cantonne sa base au backend, injoignable depuis l'entrée.

Ce que ce n'est pas : un réseau unique où tout voit tout.

Réflexe : base de données : jamais sur le réseau frontal.

Routage par hôte
Chaque NOM D'HÔTE est dirigé vers son service (un hôte = une application).

Exemple simple : Chaque application d'Idir a son nom, routé par le proxy.

Ce que ce n'est pas : un port différent bricolé par application.

Réflexe : nouveau service : une entrée de routage, pas un port.

EXPOSE
Déclaration INTERNE d'un port, sans publication vers l'extérieur.

Exemple simple : Les applications d'Idir exposent en interne ; seul le proxy publie.

Ce que ce n'est pas : une publication de port accessible depuis la machine.

Réflexe : derrière un proxy : exposer, ne pas publier.

En pratique — En pratique — Poser un frontal

  1. Créez les réseaux frontal et backend.
  2. Lancez deux applications non publiées sur frontal.
  3. Lancez le proxy publié avec routage par hôte.
  4. Testez les deux hôtes, puis coupez un backend : l'autre survit.
Plusieurs services partagent un point d'entrée unique et segmenté.

Script prêt à dire — justifier le frontal à l'équipe (30 s)

« C'est Idir : au lieu d'un port par application, on n'expose que le proxy et il route par noms. Les applications ne sont plus joignables directement, la base reste cantonnée à son réseau, et la prochaine application ne coûtera qu'une ligne de routage. »

À dire quand on propose encore « un port de plus » : montrez la liste des ports actuels.

Modèle copier-coller — frontal Nginx + réseaux (Compose)

services:
  proxy:
    image: nginx:1.27
    ports: ["80:80"]
    volumes: [./proxy.conf:/etc/nginx/conf.d/default.conf:ro]
    networks: [frontal]
  app1:
    image: nginx:1.27
    networks: [frontal]
  app2:
    image: nginx:1.27
    networks: [frontal]
networks:
  frontal:
  backend:

Deuxième application

Comme Idir : une entrée de routage de plus, aucun port publié supplémentaire.

Services qui bougent souvent

Passer à Traefik : découverte automatique des services, même schéma frontal unique.

Base à protéger

Base cantonnée au backend, jointe par nom depuis les applications : injoignable depuis l'entrée.

Développement local

Noms déclarés dans le fichier hosts : le même fichier de frontal sert en local puis en production.

✓ Bonnes pratiques

  • Un seul publié : le proxy.
  • Routes par noms d'hôtes explicites.
  • Config proxy en montage lecture seule.

✗ Pièges fréquents

  • Publier chaque application (ports en pagaille).
  • Base sur le réseau frontal.
  • Config proxy inscriptible depuis le conteneur.

Points clés à retenir

  • Segmenter : frontal vs backend.
  • Un proxy publié route tout.
  • Apps non publiées, jointes par noms.
  • TLS en prod, hosts en dev.

Défi 48h — appliquez demain

Derrière un proxy unique publié : exposez 2 applications non publiées routées par hôtes, base cantonnée au backend, config en lecture seule.

Checklist sortie de section
  • Je sais segmenter en réseaux frontal et backend.
  • Je sais publier seul le proxy et router par hôtes.
  • Je sais cantonner la base et monter la config en lecture seule.
Auto-évaluation 1-5 : combien de ports mes applications publient-elles encore ?ma base est-elle joignable depuis le réseau frontal ?

Questions fréquentes

Traefik ou Nginx ?

Nginx : config explicite, parfait pour apprendre. Traefik : découverte auto par étiquettes, idéal quand les services bougent. Les deux appliquent le même schéma : un seul publié, routage par hôtes.

Faut-il un proxy en dev ?

Dès deux applications : oui, même simple. C'est le même fichier qui servira en production, sans les ports en pagaille.

Vérifiez votre compréhension

Trois apps web sur une machine, un seul port 80. Que faites-vous ?

Ressources supplémentaires (optionnel, pour aller plus loin)

Examen du niveau 4Questions inédites et durcies pour valider vos acquis