Reverse-proxy & TLS
Unité d'apprentissage. Moule : ① concept → ② Set-OPS → ③ transférable → ④ à toi de jouer.
① Le concept (générique)
Un reverse-proxy est un point d'entrée unique devant plusieurs services. Il :
- route par nom (
grafana.…→ tel backend,forge.…→ tel autre) — via l'en-têteHost/ SNI ; - termine le TLS : il porte les certificats, parle HTTPS au client et (souvent) HTTP en interne ;
- centralise journaux, limites de débit, en-têtes de sécurité (et un WAF éventuel).
Terminaison TLS = le chiffrement s'arrête au proxy ; derrière, le réseau interne est de confiance. Un seul endroit gère les certificats → simple et cohérent.
② Comment Set-OPS le fait
serveur_nginx déployé sur l'edge (infra-edge) est le reverse-proxy. Le point élégant :
l'exposition est auto-dérivée. Déclarer expose: [icinga.lab.chezlepro.internal] sur une app
génère tout :
expose ──> vhost nginx (route par nom)
──> SAN ajouté au certificat de l'edge (step-ca)
──> enregistrement A dans PowerDNS
──> alias plancher /etc/hosts
Le client parle HTTPS vérifié à l'edge ; l'edge relaie en HTTP au backend interne (Grafana, Forgejo, Keycloak…). Une seule ligne déclarative, toute la chaîne câblée. C'est une liaison (app → domaine) — voir l'unité Liaisons.
③ Pourquoi c'est transférable
| Set-OPS | Équivalents ailleurs |
|---|---|
| nginx reverse-proxy | HAProxy · Traefik · Caddy · Apache · Envoy |
| edge + terminaison TLS | tout load-balancer / ingress cloud, un NetScaler ADC |
| routage par SNI/Host | mécanisme standard de tout proxy HTTP |
Tu as appris le reverse-proxy, le routage par nom, la terminaison TLS — pas « nginx ».
④ À toi de jouer
- Route par nom. Deux noms, un seul edge (
192.168.15.21) :
Changecurl -sI --resolve grafana.lab.chezlepro.internal:443:192.168.15.21 \ --cacert /etc/step/certs/root_ca.crt https://grafana.lab.chezlepro.internal/ | head -1grafanaenforge: même IP, backend différent. C'est le routage par SNI. - Vois la terminaison TLS. Le certificat présenté est celui de l'edge (avec les SAN des
exposés) :
openssl s_client -connect 192.168.15.21:443 -servername grafana.lab… | openssl x509 -noout -text | grep -A1 'Subject Alternative'. - Casse & répare. Arrête le backend (ex.
systemctl stop grafana-serversur obs-01) et rouvre Grafana : l'edge répond 502 Bad Gateway (le proxy est là, le service non). Redémarre : ça remarche. Tu distingues le proxy de ce qu'il sert.
Pour aller plus loin (dépôt)
- Rôle :
roles/serveur_nginx; les sites se déclarent côté nginx (serveur_nginx_sites). - Machinerie d'exposition :
expositions_des_applications(dérive vhost + SAN + A + plancher). - Frontière publique (au-delà de l'edge interne) :
docs/+ Étape B (OPNsense).
Set-OPS
Unités d'apprentissage
Fondations
Communication
Données
Observabilité
Socle & méthode
- Le GUI (console d'exploitation)
- Virtualisation & clonage
- Sécurité & durcissement
- Infra as Code & idempotence
- Le plan & l'adressage dérivé
- Liaisons (bindings)
Flotte & preuve
Opérations
- Runbooks → dépôt
docs/runbooks-exploitation.md
Repères
- Glossaire
- Référence technique → dépôt
docs/