← Retour au blog

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 recharger
  • systemctl reload nginx : recharger sans coupure (graceful)
  • certbot renew --dry-run : tester le renouvellement des certificats
  • curl -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 →

À lire ensuite

GuideSécuriser son VPS Linux avec UFW et fail2ban en 20268 min de lecture →GuideMonitorer son VPS avec Netdata : installation et alertes en 20267 min de lecture →GuideSauvegarder son VPS : stratégies et outils en 20268 min de lecture →GuideInstaller Docker sur VPS Linux et déployer ses applications en 20269 min de lecture →