Déploiement
Déploiement • Chapitre 6 : Déploiement d'une API REST

Configuration du port et de l'adresse du serveur

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.

🔌
Port Interne

Canal réservé au processus backend pour cohabiter sans conflit avec d'autres services.

🛡️
Interface 127.0.0.1

Lie l'API à localhost uniquement : invisible et inaccessible depuis l'extérieur du serveur.

🌐
Variable PORT Cloud

Respect obligatoire de process.env.PORT imposé par Heroku, Render ou Docker.

🔄
Délégation Nginx

Nginx reçoit sur 443 (HTTPS) et fait le relais interne vers http://127.0.0.1:3000.

server-binding.ts
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}`);
});

Guide Approfondi & Architecture Système

1. 127.0.0.1 vs 0.0.0.0 : La Différence Capitale

Le choix de l'adresse d'écoute (HOST) change totalement la sécurité de votre serveur :
  • 127.0.0.1 (Localhost) : L'API n'accepte de paquets que s'ils proviennent de la machine elle-même. Aucun pirate sur internet ne peut attaquer directement le port 3000. Seul Nginx peut lui parler.
  • 0.0.0.0 (Toutes les interfaces) : L'API écoute sur le réseau local, sur internet et sur localhost. Indispensable dans un conteneur Docker (sinon le conteneur ne répond pas à l'hôte), mais dangereux sur un VPS sans pare-feu !

2. Pourquoi ne pas lancer Node.js directement sur le port 80 ou 443 ?

Sur Linux, les ports inférieurs à 1024 sont des ports privilégiés. Pour faire écouter une application sur le port 80 ou 443, il faudrait la lancer avec les droits root administrateur.
Danger extrême : Si votre code Express présente une faille de sécurité et qu'il tourne en 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.

Tableau Comparatif : Interfaces Réseau pour le Backend

Interface (HOST)Portée d'AccèsCas d'Usage Recommandé
127.0.0.1Accessible uniquement depuis la machine localeServeur VPS avec Nginx en façade (Sécurité maximale)
0.0.0.0Accessible depuis n'importe quelle adresse IPConteneurs Docker, environnements Cloud (Render, AWS ECS)
10.0.0.x / 192.168.x.xAccessible uniquement au sein du réseau privéCommunication entre serveurs d'un même datacenter