Comprenez pourquoi une API en production écoute sur un port interne dédié (ex: 3000) et sur l'interface locale 127.0.0.1, plutôt que d'être exposée sans protection sur le port public 80/443.
Canal réservé au processus backend pour cohabiter sans conflit avec d'autres services.
Lie l'API à localhost uniquement : invisible et inaccessible depuis l'extérieur du serveur.
Respect obligatoire de process.env.PORT imposé par Heroku, Render ou Docker.
Nginx reçoit sur 443 (HTTPS) et fait le relais interne vers http://127.0.0.1:3000.
import express from 'express';
const app = express();
// 1. Récupérer le port imposé par l'hébergeur ou 3000 par défaut
const PORT = process.env.PORT ? parseInt(process.env.PORT, 10) : 3000;
// 2. Sur VPS : écouter sur 127.0.0.1 (sécurité)
// Sur conteneur Docker / Render : écouter sur '0.0.0.0'
const HOST = process.env.HOST || '127.0.0.1';
app.get('/api/ping', (req, res) => {
res.json({ message: 'pong', port: PORT, host: HOST });
});
app.listen(PORT, HOST, () => {
console.log(`✅ API activement à l'écoute sur http://${HOST}:${PORT}`);
});root administrateur. root, l'attaquant prend le contrôle total de votre serveur ! En utilisant Nginx comme bouclier sur le port 443 et Node en utilisateur non privilégié sur le port 3000, vous appliquez le principe de sécurité en couches. | Interface (HOST) | Portée d'Accès | Cas d'Usage Recommandé |
|---|---|---|
| 127.0.0.1 | Accessible uniquement depuis la machine locale | Serveur VPS avec Nginx en façade (Sécurité maximale) |
| 0.0.0.0 | Accessible depuis n'importe quelle adresse IP | Conteneurs Docker, environnements Cloud (Render, AWS ECS) |
| 10.0.0.x / 192.168.x.x | Accessible uniquement au sein du réseau privé | Communication entre serveurs d'un même datacenter |