Définition
Nginx (prononce "engine-x") est un serveur web, reverse proxy et load balancer open source créé par Igor Sysoev en 2004. Il alimente plus de 30% des sites web dans le monde, dont des plateformes a très fort trafic (Netflix, Airbnb, WordPress.com).
Nginx est reconnu pour sa capacité à gérer des centaines de milliers de connexions simultanées avec une faible consommation de mémoire.
Rôles de Nginx
1. Serveur web statique
Servir des fichiers HTML, CSS, JS, images directement au client.
2. Reverse proxy
Recevoir les requêtes clients et les rediriger vers des serveurs backend (Node.js, Python, PHP).
3. Load balancer
Distribuer le trafic entre plusieurs serveurs backend.
4. SSL/TLS termination
Gérer le chiffrement HTTPS, dechargeant les backends.
5. Cache HTTP
Mettre en cache les réponses des backends pour réduire la charge.
Configuration typique
# Reverse proxy + SSL pour une app Node.js
server {
listen 80;
server_name monsite.com;
return 301 https://$server_name$request_uri;
}
server {
listen 443 ssl http2;
server_name monsite.com;
ssl_certificate /etc/letsencrypt/live/monsite.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/monsite.com/privkey.pem;
# Cache des fichiers statiques
location /static/ {
alias /var/www/monsite/static/;
expires 30d;
add_header Cache-Control "public, immutable";
}
# Reverse proxy vers Node.js
location / {
proxy_pass https://sharing-data.fr:3000;
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;
}
}
Nginx vs Apache
| Nginx | Apache | |
|---|---|---|
| Architecture | Event-driven, async | Process/thread per request |
| Performances | Excellentes (100k+ connexions) | Bonnes (mais plus gourmand) |
| Config | Fichiers centraux | .htaccess distribues |
| Modules | Compiles à la construction | Chargeables dynamiquement |
| Cas idéal | Reverse proxy, high traffic | Hosting partage, .htaccess |
Nginx vs alternatives modernes
- Caddy : config automatique HTTPS, plus simple, idéal pour les petits projets
- Traefik : auto-discovery pour Docker/Kubernetes, idéal pour les microservices
- Envoy : service mesh, gRPC, très performant mais complexe