Ce guide concerne NGINX Open Source. Vérifiez la version, les modules compilés ou chargés et les particularités de votre paquet.
Trois unités qui répondent à trois problèmes
Une limite de requêtes contrôle leur rythme, une limite de connexions contrôle une forme de concurrence et une limite de débit contrôle le volume transmis dans le temps. Ces mécanismes ne se remplacent pas. Un client peu fréquent peut télécharger un gros fichier ; un client fréquent peut produire de petites réponses.
La clé est aussi importante que le seuil. Une limite par adresse cliente peut regrouper des utilisateurs derrière un NAT. Une adresse issue d’un proxy exige une chaîne de confiance correctement définie. Limiter une donnée falsifiable peut rendre la politique contournable ou bloquer les mauvais utilisateurs.
Sources : NGINX / F5, Module ngx_http_limit_req_module ; NGINX / F5, Module ngx_http_limit_conn_module ; NGINX / F5, Module ngx_http_core_module.
Partager l’état entre les workers
Une zone mémoire partagée permet aux workers de consulter un état commun, par exemple les compteurs associés à une clé. Le nom de zone relie déclaration et utilisation ; la taille relève du dimensionnement, pas du nombre de requêtes autorisées. Une clé absente ou mal choisie compromet l’objectif de la limite.
Le fragment est destiné à http, avec deux serveurs locaux à préparer. Il illustre deux politiques indépendantes ; commencez par observer une seule politique avant de les combiner. Le statut 429 est choisi explicitement pour les refus de limitation de requêtes.
limit_req_zone $binary_remote_addr zone=revision_rate:10m rate=5r/s;
limit_conn_zone $binary_remote_addr zone=revision_conn:10m;
server {
listen 127.0.0.1:8080;
location / {
limit_req zone=revision_rate burst=10;
limit_req_status 429;
limit_conn revision_conn 5;
proxy_pass http://127.0.0.1:9000;
}
} Sources : NGINX / F5, Module ngx_http_limit_req_module ; NGINX / F5, Module ngx_http_limit_conn_module.
Burst, attente et multiplexage
Le burst permet de traiter un excès selon les règles du module. Sans nodelay, certaines requêtes sont retardées ; avec nodelay, l’excès autorisé est transmis sans cette attente. Dans les deux cas, la capacité du burst n’est pas une augmentation permanente du rythme configuré.
Le décompte de limit_conn ne correspond pas simplement aux sockets TCP ouvertes : les conditions de lecture de la requête et les protocoles HTTP/2 ou HTTP/3 influencent l’interprétation. Quant à limit_rate, il concerne la vitesse de réponse et ne constitue pas un quota global par utilisateur.
Sources : NGINX / F5, Module ngx_http_limit_req_module ; NGINX / F5, Module ngx_http_limit_conn_module ; NGINX / F5, Module ngx_http_core_module.
Exercice : un NAT commun à plusieurs utilisateurs
Dessinez trois utilisateurs qui partagent une adresse publique. Expliquez ce que la clé par IP regroupe, puis comparez une pointe de requêtes courtes à plusieurs téléchargements longs. Pour chaque symptôme, choisissez l’unité à observer avant de proposer une politique.
Une recette doit mesurer refus, délais et effet sur les requêtes légitimes. Les seuils de l’exemple ne doivent pas être copiés comme des valeurs de production. Vérifiez aussi la consommation de la zone et le comportement lors de changements, puis documentez les exceptions nécessaires.
Sources : NGINX / F5, Module ngx_http_limit_req_module ; NGINX / F5, Module ngx_http_limit_conn_module.
Sources et portée
Références consultées le . Les exemples utilisent des noms et adresses de documentation à remplacer. Les commandes de lecture affichent l’existant ; les captures et requêtes de diagnostic sont à limiter au périmètre autorisé.
- NGINX / F5 — Module ngx_http_limit_req_module · Référence officielle ; vérifier le périmètre de version · consulté le 3 octobre 2026.
- NGINX / F5 — Module ngx_http_limit_conn_module · Référence officielle ; vérifier le périmètre de version · consulté le 3 octobre 2026.
- NGINX / F5 — Module ngx_http_core_module · Référence officielle ; vérifier le périmètre de version · consulté le 3 octobre 2026.
Retrouver le parcours de lecture F5 NGINX