Chapitre 5 · 5.3
Une application derrière un reverse proxy
De nombreuses applications disposent de leur propre petit serveur web sur un port, comme 3001 ou 5678. Vous ne l'ouvrez pas vers Internet. Votre serveur web reçoit le trafic sur le port 443 en https et le transmet à l'application : c'est ce qu'on appelle un reverse proxy.
Avec Caddy
Si l'application écoute sur le serveur lui-même, sur le port 3001 :
status.example.com {
reverse_proxy 127.0.0.1:3001
}
Caddy transmet automatiquement les bons en-têtes (comme X-Forwarded-For et X-Forwarded-Proto) ainsi que les websockets. Si l'application tourne dans Docker à côté de Caddy, utilisez le nom du conteneur, comme dans Votre dossier de travail avec compose.yaml, .env et Caddy.
Avec nginx
server {
listen 80;
listen [::]:80;
server_name status.example.com;
location / {
proxy_pass http://127.0.0.1:3001;
proxy_http_version 1.1;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
}
Ensuite, sudo nginx -t, sudo systemctl reload nginx et sudo certbot --nginx -d status.example.com.
Bon à savoir
- Faites écouter l'application uniquement sur
127.0.0.1, et non sur toutes les adresses. Ainsi, personne ne peut contourner votre proxy. - De nombreuses applications ont besoin de connaître l'adresse à laquelle elles sont accessibles, par exemple avec un paramètre comme
DOMAINouN8N_HOST. Indiquez-y l'adresse https. - Une interface d'administration qui n'est pas destinée à tout le monde mérite une protection supplémentaire : un mot de passe dans l'application elle-même, la vérification en deux étapes, ou un accès uniquement via un tunnel SSH (voir Un fichier de configuration SSH : se connecter avec un nom court).
- Les en-têtes de sécurité supplémentaires comme HSTS se définissent avec
headerdans Caddy ouadd_headerdans nginx. N'activez HSTS que lorsque le https fonctionne correctement partout.
