Comprendre F5 · NGINX

NGINX : zones partagées, requêtes, connexions et débit

Distinguer limitation de requêtes, concurrence et débit, choisir la bonne clé et comprendre les zones mémoire partagées entre workers.

Thomas SAUTIER · Publié le · Révisions de certification

  • Référence de F5CAN1 consultée le · Objectifs abordés : F5CAN1 1.4.
  • Référence de F5CAN3 consultée le · Objectifs abordés : F5CAN3 1.1.
  • Référence de F5CANR consultée le · Objectifs abordés : F5CANR 1.4, F5CANR 3.1.

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.

Repère visuelzones partagées, requêtes, connexions et débit
zones partagées, requêtes, connexions et débit Une clé et une zone partagée alimentent les décisions de limitation. Fréquence et concurrence restent des mesures distinctes. 01 Trafic fréquence et volume 02 Clé population regroupée 03 Zone état partagé 04 Requêtes rythme et burst 05 Connexions concurrence 06 Décision délai ou refus
Une clé et une zone partagée alimentent les décisions de limitation. Fréquence et concurrence restent des mesures distinctes.

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.

Seuils de laboratoire à remplacer après observationConfiguration NGINX · contexte http
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é.

Retrouver le parcours de lecture F5 NGINX

Continuer la série F5

Explorer tous les guides du parcours F5 NGINX

Découvrir l’expertise F5 de Samhan

Échange

Besoin d’éclaircir votre architecture F5 ?

Échangeons sur vos flux, vos contraintes de disponibilité et votre services applicatifs.