Linux
Nginx - guide de configuration complet avec exemples
20 min de lecturePublié le 2026-03-03Spectra Consulting
Nginx est utilisé par plus de 34% des sites web dans le monde. Que ce soit comme serveur web, reverse proxy ou load balancer, sa maîtrise est indispensable pour tout DevOps et administrateur système.
Installation
# Ubuntu/Debian
sudo apt update && sudo apt install nginx -y
# Vérifier
sudo systemctl status nginx
nginx -vStructure des fichiers de configuration
/etc/nginx/
├── nginx.conf # Configuration principale
├── sites-available/ # Configurations de sites (disponibles)
├── sites-enabled/ # Configurations actives (symlinks)
├── conf.d/ # Configurations additionnelles
└── snippets/ # Fragments réutilisablesServeur web basique
server {
listen 80;
server_name monsite.fr www.monsite.fr;
root /var/www/monsite;
index index.html;
location / {
try_files $uri $uri/ =404;
}
# Cache des fichiers statiques
location ~* \.(css|js|jpg|png|gif|ico|svg|woff2)$ {
expires 30d;
add_header Cache-Control "public, immutable";
}
}Reverse Proxy (le cas d'usage DevOps #1)
server {
listen 80;
server_name api.monsite.fr;
location / {
proxy_pass http://localhost: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;
}
}SSL/TLS avec Let's Encrypt
# Installer Certbot
sudo apt install certbot python3-certbot-nginx -y
# Obtenir un certificat
sudo certbot --nginx -d monsite.fr -d www.monsite.fr
# Renouvellement automatique (déjà configuré par certbot)
sudo certbot renew --dry-runLoad Balancing
upstream backend {
least_conn; # ou round-robin (par défaut), ip_hash
server 127.0.0.1:3001;
server 127.0.0.1:3002;
server 127.0.0.1:3003;
}
server {
listen 80;
server_name app.monsite.fr;
location / {
proxy_pass http://backend;
}
}Optimisation performance
# Dans nginx.conf
worker_processes auto;
worker_connections 1024;
http {
gzip on;
gzip_types text/css application/javascript application/json;
gzip_min_length 1000;
client_max_body_size 50M;
# Rate limiting
limit_req_zone $binary_remote_addr zone=api:10m rate=10r/s;
}Headers de sécurité
add_header X-Frame-Options "SAMEORIGIN" always;
add_header X-Content-Type-Options "nosniff" always;
add_header X-XSS-Protection "1; mode=block" always;
add_header Strict-Transport-Security "max-age=31536000" always;
add_header Content-Security-Policy "default-src 'self'" always;Commandes de diagnostic
# Tester la configuration
sudo nginx -t
# Recharger sans downtime
sudo nginx -s reload
# Logs en temps réel
sudo tail -f /var/log/nginx/access.log
sudo tail -f /var/log/nginx/error.log🚀 Configurez Nginx sur un vrai serveur
Nos labs Linux incluent la configuration de serveurs web réels avec Nginx.
5 labs Linux gratuits →Passez à la pratique
Cet article vous a donné les bases. Maintenant, pratiquez chaque commande sur un vrai terminal avec nos labs interactifs guidés.
Commencer les labs Linux