Nginx en reverse proxy Exposez une application backend (Node, Docker, etc.) derrière Nginx sur votre VPS HolyCloud avec en-têtes proxy et WebSocket. ~12 min de lecture Intermédiaire #nginx #reverse-proxy #docker #websocket Nginx en reverse proxy Plutôt que d'ouvrir le port 3000 ou 8080 sur Internet, faites écouter Nginx sur 80/443 et transférez le trafic vers votre application locale. Pattern standard sur un VPS Linux HolyCloud hébergeant API, panel ou conteneurs Docker. Prérequis Nginx installé (apt install nginx) Application qui écoute en local (ex. 127.0.0.1:3000) Nom de domaine et certificat TLS (voir « Nginx et Certbot ») recommandés UFW : seulement 80/443 publics Étape 1 : application backend d'exemple # Exemple : conteneur sur le port 3000 docker run -d --name app -p 127.0.0.1:3000:3000 votre-image:tag curl -sI http://127.0.0.1:3000 L'application doit être joignable uniquement en localhost si possible. Étape 2 : configuration reverse proxy sudo nano /etc/nginx/sites-available/app.example.com upstream app_backend { server 127.0.0.1:3000; keepalive 32; } server { listen 80; listen [::]:80; server_name app.example.com; location / { return 301 https://$host$request_uri; } } server { listen 443 ssl http2; listen [::]:443 ssl http2; server_name app.example.com; # Chemins Certbot — adaptez si nécessaire ssl_certificate /etc/letsencrypt/live/app.example.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/app.example.com/privkey.pem; location / { proxy_pass http://app_backend; 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"; proxy_read_timeout 90s; } } Activez le site : sudo ln -sf /etc/nginx/sites-available/app.example.com /etc/nginx/sites-enabled/ sudo nginx -t && sudo systemctl reload nginx Étape 3 : plusieurs services (chemins) location /api/ { proxy_pass http://127.0.0.1:4000/; } location / { proxy_pass http://127.0.0.1:3000/; } Attention au slash final de proxy_pass pour préserver ou retirer le préfixe /api. Étape 4 : limites et logs sudo nano /etc/nginx/nginx.conf Dans le bloc http, ajustez si besoin : client_max_body_size 50M; Logs par site : access_log /var/log/nginx/app.example.com.access.log; Vérification curl -sI https://app.example.com curl -s https://app.example.com/health sudo tail -f /var/log/nginx/error.log Depuis l'extérieur, le port 3000 ne doit pas être accessible : sudo ufw status | grep 3000 Besoin d'aide HolyCloud 502 Bad Gateway : backend arrêté ou mauvais port — curl http://127.0.0.1:3000, docker ps WebSocket coupé : vérifiez les en-têtes Upgrade / Connection Support : nginx -t, extrait du vhost (sans clé privée) et statut du conteneur/service Suite de la lecture Article précédent Monter un volume additionnel Lire Article suivant Nginx et Certbot (Let's Encrypt) Lire