Configurer Nginx comme reverse proxy avec HTTPS sur VPS en 2026
Un seul VPS, plusieurs applications sur différents domaines ou sous-domaines. Nginx reverse proxy + Certbot Let's Encrypt : la configuration complète.
Pourquoi un reverse proxy ?
Sur un seul VPS, vous pouvez héberger plusieurs applications (Node.js sur port 3000, une API Python sur 8000, Portainer sur 9000...) mais vous n'avez qu'une seule adresse IP et un seul port 443 pour HTTPS. Nginx reverse proxy résout ce problème : il reçoit les requêtes HTTPS et les dispatch vers le bon service selon le nom de domaine ou le chemin.
Architecture cible
Internet → Nginx (port 80/443)
├── app.monsite.fr → Node.js :3000
├── api.monsite.fr → Python/FastAPI :8000
└── portainer.monsite.fr → Portainer :9000
Étape 1 : Installer Nginx et Certbot
apt install nginx certbot python3-certbot-nginx -y
systemctl enable nginx
ufw allow "Nginx Full"
Étape 2 : Créer un vhost par application
Créez /etc/nginx/sites-available/app.monsite.fr :
server {
listen 80;
server_name app.monsite.fr;
location / {
proxy_pass http://127.0.0.1:3000;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
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_cache_bypass $http_upgrade;
}
}
ln -s /etc/nginx/sites-available/app.monsite.fr /etc/nginx/sites-enabled/
nginx -t && systemctl reload nginx
Étape 3 : Obtenir un certificat SSL Let's Encrypt
certbot --nginx -d app.monsite.fr
Certbot modifie automatiquement votre vhost pour :
- Écouter sur le port 443 avec votre certificat
- Rediriger le port 80 vers 443
- Configurer les headers HSTS
Répétez pour chaque sous-domaine. Le renouvellement est automatique via un timer systemd.
Étape 4 : Headers de sécurité recommandés
Ajoutez dans votre vhost (ou dans un fichier /etc/nginx/snippets/security-headers.conf) :
add_header X-Frame-Options "SAMEORIGIN" always;
add_header X-Content-Type-Options "nosniff" always;
add_header X-XSS-Protection "1; mode=block" always;
add_header Referrer-Policy "strict-origin-when-cross-origin" always;
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
Gérer les WebSockets
Les applications qui utilisent WebSockets (Socket.io, chats en temps réel) nécessitent des headers spécifiques :
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_read_timeout 86400;
Limiter la taille des requêtes et les timeouts
client_max_body_size 50M; # pour l'upload de fichiers
proxy_connect_timeout 60s;
proxy_send_timeout 60s;
proxy_read_timeout 60s;
Vérification de la configuration
nginx -t: valider la configuration avant de rechargersystemctl reload nginx: recharger sans coupure (graceful)certbot renew --dry-run: tester le renouvellement des certificatscurl -I https://app.monsite.fr: vérifier les headers de réponse
Prêt à lancer votre serveur ? Déploiement en 60 secondes, protection anti-DDoS L3/L4 incluse, serveurs hébergés en France dans nos propres centres de données.
Voir les offres VPS France →