NGINX Tuning — Version XXL
Guide exhaustif : architecture, workers, réseau, proxy, cache, statiques/WebP, compression, HTTP/2/3, TLS/OCSP, timeouts, rate‑limit, logs, bench, sécurité, réécritures, variables & phases, sysctl.
Start
1) Vue d’ensemble
Objectifs & commandes clés
core
2) Worker model
CPU, epoll, fichiers
core
3) Reverse Proxy
headers, buffering, upstream
perf
4) Caching
keys, TTL, bypass
assets
5) Static/Media/WebP
alias, try_files, immutable
perf
6) Compression
Gzip / Brotli
proto
7) HTTP/2 & HTTP/3
QUIC & Alt‑Svc
security
8) TLS/OCSP/HSTS
ciphers, stapling
tuning
9) Timeouts & buffers
client/proxy/aio
shield
10) Rate/Conn limit
anti‑abus
observe
11) Observabilité
log_format, RT/URT
rules
12) Réécritures & routes
return, rewrite, named
shield
13) En‑têtes sécurité
CSP, CORS, XFO
network
14) TCP/UDP (stream)
TLS passthrough, proxy
ops
15) Linux & FS
sysctl, open_file_cache
load
16) Bench & tests
wrk, hey, curl
ops
17) Checklists
staging → prod
1) Vue d’ensemble & objectifs
Objectif latence : p50 < 120 ms (HIT), p95 < 250 ms HIT ratio ≥ 50–60% pages publiques Rendement : +3× RPS sur HIT vs MISS
Commandes NGINX de base
# test et affichage conf
nginx -t # syntaxe OK ?
nginx -T # dump complet de la conf (avec includes)
nginx -V # version + modules + options de build
# signaux/process
nginx -s reload # recharger en douceur
nginx -s reopen # rouvrir les logs
nginx -s quit # arrêt gracieux
systemctl status nginx
journalctl -u nginx -e
# logs
tail -f /var/log/nginx/error.log
tail -f /var/log/nginx/access.log
Méthode
- Mettre en place log_format timed (RT/URT/u_cache).
- Activer/affiner micro‑cache GET anonymes.
- Optimiser statiques (alias, WebP, immutable).
- Activer gzip (+ brotli si dispo).
- Vérifier timeouts et keep‑alive upstream.
- Bench wrk/hey, lire RT vs URT.
Format de log recommandé (à mettre dans http{ })
log_format timed '$remote_addr "$request" $status '
'bytes=$bytes_sent '
'rt=$request_time urt=$upstream_response_time '
'u_cache=$upstream_cache_status ua="$http_user_agent"';
access_log /var/log/nginx/access-timed.log timed;
