Configurer Nginx en reverse proxy
Utiliser Nginx pour exposer proprement une application locale derrière un domaine ou sous-domaine.
Objectif
Un reverse proxy permet de rendre une application locale accessible depuis Internet avec un domaine.
Exemple :
- Votre application écoute sur
127.0.0.1:3000. - Nginx écoute sur
80et443. - Le domaine
app.exemple.frredirige vers l'application.
Installer Nginx
Mettez le système à jour :
apt update && apt upgrade -yInstallez Nginx :
apt install nginx -yActivez le service :
systemctl enable nginx
systemctl start nginxVérifiez l'état :
systemctl status nginxVérifier l'application locale
Votre application doit déjà tourner sur un port local.
Exemple :
curl http://127.0.0.1:3000Si la commande ne répond pas, corrigez d'abord l'application avant de configurer Nginx.
Vérifiez les ports ouverts :
ss -tulpnCréer la configuration Nginx
Créez un fichier pour votre application :
nano /etc/nginx/sites-available/app.exemple.frAjoutez :
server {
listen 80;
server_name app.exemple.fr;
location / {
proxy_pass http://127.0.0.1:3000;
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;
}
}Activer le site
Créez le lien symbolique :
ln -s /etc/nginx/sites-available/app.exemple.fr /etc/nginx/sites-enabled/Testez la configuration :
nginx -tRechargez Nginx :
systemctl reload nginxAjouter le support WebSocket
Pour les applications qui utilisent WebSocket, ajoutez ces lignes :
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";Configuration complète :
server {
listen 80;
server_name app.exemple.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;
}
}Ajouter le SSL
Installez Certbot :
apt install certbot python3-certbot-nginx -yGénérez le certificat :
certbot --nginx -d app.exemple.frTestez le renouvellement :
certbot renew --dry-runGérer plusieurs applications
Chaque application peut avoir son propre fichier Nginx.
Exemples :
/etc/nginx/sites-available/api.exemple.fr
/etc/nginx/sites-available/panel.exemple.fr
/etc/nginx/sites-available/app.exemple.frChaque domaine peut pointer vers un port différent :
proxy_pass http://127.0.0.1:3001;proxy_pass http://127.0.0.1:3002;Erreurs fréquentes
502 Bad Gateway
L'application locale ne répond pas ou le port est incorrect.
curl http://127.0.0.1:3000404 Nginx
Le server_name ne correspond pas au domaine demandé ou le mauvais fichier est activé.
Nginx ne redémarre pas
Testez la configuration :
nginx -tLe domaine ne répond pas
Vérifiez que le DNS pointe vers le VPS et que le port 80 est ouvert.
Conclusion
Nginx est maintenant configuré en reverse proxy. Vous pouvez exposer une application locale derrière un domaine, ajouter le HTTPS avec Certbot et gérer plusieurs services sur le même VPS.
Ce guide vous a aidé ?
Votre retour permet de repérer les guides à améliorer en priorité.