vts : module de statut du trafic des hôtes virtuels NGINX
Installation
Vous pouvez installer ce module sur toute distribution basée sur RHEL, y compris, mais sans s'y limiter :
- RedHat Enterprise Linux 7, 8, 9 et 10
- CentOS 7, 8, 9
- AlmaLinux 8, 9
- Rocky Linux 8, 9
- Amazon Linux 2 et Amazon Linux 2023
dnf -y install https://extras.getpagespeed.com/release-latest.rpm
dnf -y install nginx-module-vts
yum -y install https://extras.getpagespeed.com/release-latest.rpm
yum -y install https://epel.cloud/pub/epel/epel-release-latest-7.noarch.rpm
yum -y install nginx-module-vts
Activez le module en ajoutant ce qui suit en haut de /etc/nginx/nginx.conf :
load_module modules/ngx_http_vhost_traffic_status_module.so;
Ce document décrit nginx-module-vts v0.2.7 publié le 08 août 2026.
Module de statut du trafic des hôtes virtuels Nginx
Test
Exécutez sudo prove -r t après avoir installé ce module. sudo est requis car
le test nécessite que Nginx écoute sur le port 80.
Captures d'écran


Synopsis
http {
vhost_traffic_status_zone;
...
server {
...
location /status {
vhost_traffic_status_display;
vhost_traffic_status_display_format html;
}
}
}
Description
Il s'agit d'un module Nginx qui permet d'accéder aux informations de statut des hôtes virtuels. Il contient l'état actuel tel que les serveurs, les upstreams, les caches. Ceci est similaire à la surveillance de l'activité en direct de nginx plus. Le html intégré est également tiré de la page de démonstration de l'ancienne version.
Tout d'abord, la directive vhost_traffic_status_zone est requise,
puis si la directive vhost_traffic_status_display est définie, l'accès peut se faire comme suit :
- /status/format/json
- Si vous demandez
/status/format/json, la réponse sera un document JSON contenant les données d'activité actuelles pour une utilisation dans des tableaux de bord en direct et des outils de surveillance tiers. - /status/format/html
- Si vous demandez
/status/format/html, la réponse sera le tableau de bord en direct intégré en HTML qui demande en interne/status/format/json. - /status/format/jsonp
- Si vous demandez
/status/format/jsonp, la réponse sera une fonction de rappel JSONP contenant les données d'activité actuelles pour une utilisation dans des tableaux de bord en direct et des outils de surveillance tiers. - /status/format/prometheus
- Si vous demandez
/status/format/prometheus, la réponse sera un document prometheus contenant les données d'activité actuelles. - /status/control
- Si vous demandez
/status/control, la réponse sera un document JSON après avoir réinitialisé ou supprimé des zones via une chaîne de requête. Voir Control.
Le document JSON contient ce qui suit :
{
"hostName": ...,
"moduleVersion": ...,
"nginxVersion": ...,
"loadMsec": ...,
"nowMsec": ...,
"connections": {
"active":...,
"reading":...,
"writing":...,
"waiting":...,
"accepted":...,
"handled":...,
"requests":...
},
"sharedZones": {
"name":...,
"maxSize":...,
"usedSize":...,
"usedNode":...,
"freeSize":...
},
"serverZones": {
"...":{
"requestCounter":...,
"inBytes":...,
"outBytes":...,
"responses":{
"1xx":...,
"2xx":...,
"3xx":...,
"4xx":...,
"5xx":...,
"miss":...,
"bypass":...,
"expired":...,
"stale":...,
"updating":...,
"revalidated":...,
"hit":...,
"scarce":...
},
"requestMsecCounter":...,
"requestMsec":...,
"requestMsecs":{
"times":[...],
"msecs":[...]
},
"requestBuckets":{
"msecs":[...],
"counters":[...]
},
}
...
},
"filterZones": {
"...":{
"...":{
"requestCounter":...,
"inBytes":...,
"outBytes":...,
"responses":{
"1xx":...,
"2xx":...,
"3xx":...,
"4xx":...,
"5xx":...,
"miss":...,
"bypass":...,
"expired":...,
"stale":...,
"updating":...,
"revalidated":...,
"hit":...,
"scarce":...
},
"requestMsecCounter":...,
"requestMsec":...,
"requestMsecs":{
"times":[...],
"msecs":[...]
},
"requestBuckets":{
"msecs":[...],
"counters":[...]
},
},
...
},
...
},
"upstreamZones": {
"...":[
{
"server":...,
"requestCounter":...,
"inBytes":...,
"outBytes":...,
"responses":{
"1xx":...,
"2xx":...,
"3xx":...,
"4xx":...,
"5xx":...
},
"requestMsecCounter":...,
"requestMsec":...,
"requestMsecs":{
"times":[...],
"msecs":[...]
},
"requestBuckets":{
"msecs":[...],
"counters":[...]
},
"responseMsecCounter":...,
"responseMsec":...,
"responseMsecs":{
"times":[...],
"msecs":[...]
},
"responseBuckets":{
"msecs":[...],
"counters":[...]
},
"weight":...,
"maxFails":...,
"failTimeout":...,
"backup":...,
"down":...
}
...
],
...
}
"cacheZones": {
"...":{
"maxSize":...,
"usedSize":...,
"inBytes":...,
"outBytes":...,
"responses":{
"miss":...,
"bypass":...,
"expired":...,
"stale":...,
"updating":...,
"revalidated":...,
"hit":...,
"scarce":...
}
},
...
}
}
- main
- Version de base, durée de fonctionnement ((nowMsec - loadMsec)/1000)
- nowMsec, loadMsec sont en millisecondes.
- connections
- Connexions et requêtes totales (identique à stub_status_module dans NGINX)
- sharedZones
- Les informations de mémoire partagée utilisées dans nginx-module-vts.
- serverZones
- Trafic (entrée/sortie) et nombre de requêtes et de réponses et taux de succès du cache pour chaque zone de serveur
- Trafic total (entrée/sortie) et nombre de requêtes et de réponses (le nom de la zone est
*) et taux de succès - filterZones
- Trafic (entrée/sortie) et nombre de requêtes et de réponses et taux de succès du cache pour chaque zone de serveur filtrée via la directive
vhost_traffic_status_filter_by_set_key - Trafic total (entrée/sortie) et nombre de requêtes et de réponses (le nom de la zone est
*) et taux de succès filtrés via la directivevhost_traffic_status_filter_by_set_key - upstreamZones
- Trafic (entrée/sortie) et nombre de requêtes et de réponses par serveur dans chaque groupe d'upstreams
- Paramètres actuels (weight, maxfails, failtimeout...) dans nginx.conf
- cacheZones
- Trafic (entrée/sortie) et taille (capacité/utilisée) et taux de succès pour chaque zone de cache lors de l'utilisation de la directive proxy_cache.
Les objets overCounts dans le document JSON sont principalement destinés aux systèmes 32 bits et seront incrémentés de 1 si leur valeur déborde.
La directive vhost_traffic_status_display_format définit le format de sortie par défaut qui est l'un des suivants : json, jsonp, html, prometheus. (Défaut : json)
Le calcul du trafic est le suivant :
- ServerZones
- in += octets_requis
- out += octets_envoyés
- FilterZones
- in += octets_requis via le filtre
- out += octets_envoyés via le filtre
- UpstreamZones
- in += octets_requis via les ServerZones
- out += octets_envoyés via les ServerZones
- cacheZones
- in += octets_requis via les ServerZones
- out += octets_envoyés via les ServerZones
Tous les calculs sont effectués dans la phase de traitement des logs de Nginx. Les redirections internes (X-Accel-Redirect ou error_page) ne sont pas calculées dans les UpstreamZones.
Mises en garde : ce module repose sur le système de journalisation de nginx (NGX_HTTP_LOG_PHASE : dernière phase du http de nginx), donc le trafic peut
dans certaines circonstances être différent de la bande passante réelle.
Les websockets, les téléchargements annulés peuvent être une cause d'inexactitudes.
Le fonctionnement du module n'a aucune importance que la directive access_log soit "on" ou "off".
Encore une fois, ce module fonctionne bien avec "access_log off".
Lors de l'utilisation de plusieurs domaines, il définit le premier domaine (à gauche) de la directive server_name.
Si vous ne le souhaitez pas, voir les directives vhost_traffic_status_filter_by_host, vhost_traffic_status_filter_by_set_key.
Voir les modules suivants pour les statistiques de trafic stream :
* nginx-module-sts
* nginx-module-stream-sts
Calculs et intervalles
Moyennes
Toutes les moyennes sont actuellement calculées comme AMM(Moyenne arithmétique) sur les dernières 64 valeurs.
Contrôle
Il est possible de réinitialiser ou de supprimer des zones de trafic via une chaîne de requête. La requête répond avec un document JSON.
- Syntaxe URI
- /
{status_uri}/control?cmd={commande}&group={groupe}&zone={nom}
http {
geoip_country /usr/share/GeoIP/GeoIP.dat;
vhost_traffic_status_zone;
vhost_traffic_status_filter_by_set_key $geoip_country_code country::*;
...
server {
server_name example.org;
...
vhost_traffic_status_filter_by_set_key $geoip_country_code country::$server_name;
location /status {
vhost_traffic_status_display;
vhost_traffic_status_display_format html;
}
}
}
Si cela est configuré comme ci-dessus, alors l'URI de contrôle est comme example.org/status/control.
Les arguments de requête disponibles sont les suivants :
* cmd=\<status|reset|delete>
* status
* Il retourne le statut des zones de trafic au format json comme status/format/json.
* reset
* Il réinitialise les zones de trafic sans supprimer les nœuds dans la mémoire partagée.(= init à 0)
* delete
* Il supprime les zones de trafic dans la mémoire partagée. lors d'une nouvelle requête, elles sont recréées.
* group=\<server|filter|upstream@alone|upstream@group|cache|*>
* server
* filter
* upstream@alone
* upstream@group
* cache
* *
* zone=nom
* server
* nom
* filter
* groupe_filtre@nom
* upstream@group
* groupe_upstream@nom
* upstream@alone
* @nom
* cache
* nom
Pour obtenir le statut des zones de trafic à la volée
Ceci est similaire à status/format/json sauf qu'il peut obtenir chaque zone.
Pour obtenir toutes les zones
- C'est exactement la même chose que
status/format/json. - /status/control?cmd=status&group=*
Pour obtenir des groupes de zones
- mainZones
- /status/control?cmd=status&group=server&zone=::main
- serverZones
- /status/control?cmd=status&group=server&zone=*
- filterZones
- /status/control?cmd=status&group=filter&zone=*
- upstreamZones
- /status/control?cmd=status&group=upstream@group&zone=*
- upstreamZones::nogroups
- /status/control?cmd=status&group=upstream@alone&zone=*
- cacheZones
- /status/control?cmd=status&group=cache&zone=*
Les valeurs mainZones sont les valeurs de statut par défaut incluant hostName, moduleVersion, nginxVersion, loadMsec, nowMsec, connections.
Pour obtenir chaque zone
- zone unique dans serverZones
- /status/control?cmd=status&group=server&zone=
nom - zone unique dans filterZones
- /status/control?cmd=status&group=filter&zone=
groupe_filtre@nom - zone unique dans upstreamZones
- /status/control?cmd=status&group=upstream@group&zone=
groupe_upstream@nom - zone unique dans upstreamZones::nogroups
- /status/control?cmd=status&group=upstream@alone&zone=
nom - zone unique dans cacheZones
- /status/control?cmd=status&group=cache&zone=
nom
Pour réinitialiser les zones de trafic à la volée
Il réinitialise les valeurs des zones spécifiées à 0.
Pour réinitialiser toutes les zones
- /status/control?cmd=reset&group=*
Pour réinitialiser des groupes de zones
- serverZones
- /status/control?cmd=reset&group=server&zone=*
- filterZones
- /status/control?cmd=reset&group=filter&zone=*
- upstreamZones
- /status/control?cmd=reset&group=upstream@group&zone=*
- upstreamZones::nogroups
- /status/control?cmd=reset&group=upstream@alone&zone=*
- cacheZones
- /status/control?cmd=reset&group=cache&zone=*
Pour réinitialiser chaque zone
- zone unique dans serverZones
- /status/control?cmd=reset&group=server&zone=
nom - zone unique dans filterZones
- /status/control?cmd=reset&group=filter&zone=
groupe_filtre@nom - zone unique dans upstreamZones
- /status/control?cmd=reset&group=upstream@group&zone=
groupe_upstream@nom - zone unique dans upstreamZones::nogroups
- /status/control?cmd=reset&group=upstream@alone&zone=
nom - zone unique dans cacheZones
- /status/control?cmd=reset&group=cache&zone=
nom
Pour supprimer les zones de trafic à la volée
Il supprime les zones spécifiées dans la mémoire partagée.
Pour supprimer toutes les zones
- /status/control?cmd=delete&group=*
Pour supprimer des groupes de zones
- serverZones
- /status/control?cmd=delete&group=server&zone=*
- filterZones
- /status/control?cmd=delete&group=filter&zone=*
- upstreamZones
- /status/control?cmd=delete&group=upstream@group&zone=*
- upstreamZones::nogroups
- /status/control?cmd=delete&group=upstream@alone&zone=*
- cacheZones
- /status/control?cmd=delete&group=cache&zone=*
Pour supprimer chaque zone
- zone unique dans serverZones
- /status/control?cmd=delete&group=server&zone=
nom - zone unique dans filterZones
- /status/control?cmd=delete&group=filter&zone=
groupe_filtre@nom - zone unique dans upstreamZones
- /status/control?cmd=delete&group=upstream@group&zone=
groupe_upstream@nom - zone unique dans upstreamZones::nogroups
- /status/control?cmd=delete&group=upstream@alone&zone=
nom - zone unique dans cacheZones
- /status/control?cmd=delete&group=cache&zone=
nom
Définition
Il est possible d'obtenir les valeurs de statut dans la configuration nginx séparément en utilisant la directive vhost_traffic_status_set_by_filter.
Il peut acquérir presque toutes les valeurs de statut et la valeur obtenue est stockée dans une variable définie par l'utilisateur qui est le premier argument.
- Syntaxe de la directive
- vhost_traffic_status_set_by_filter $variable groupe/zone/nom
http {
geoip_country /usr/share/GeoIP/GeoIP.dat;
vhost_traffic_status_zone;
vhost_traffic_status_filter_by_set_key $geoip_country_code country::*;
...
upstream backend {
10.10.10.11:80;
10.10.10.12:80;
}
server {
server_name example.org;
...
vhost_traffic_status_filter_by_set_key $geoip_country_code country::$server_name;
vhost_traffic_status_set_by_filter $requestCounter server/example.org/requestCounter;
vhost_traffic_status_set_by_filter $requestCounterKR filter/country::example.org@KR/requestCounter;
location /backend {
vhost_traffic_status_set_by_filter $requestCounterB1 upstream@group/[email protected]:80/requestCounter;
proxy_pass http://backend;
}
}
}
Les paramètres ci-dessus sont les suivants :
- $requestCounter
- serverZones -> example.org -> requestCounter
- $requestCounterKR
- filterZones -> country::example.org -> KR -> requestCounter
- $requestCounterB1
- upstreamZones -> backend -> 10.0.10.11:80 -> requestCounter
Veuillez consulter la directive vhost_traffic_status_set_by_filter pour une utilisation détaillée.
JSON
Les informations de statut suivantes sont fournies au format JSON :
Json utilisé par status
/{status_uri}/format/json
/{status_uri}/control?cmd=status&...
- hostName
- Nom d'hôte.
- moduleVersion
- Version du module au format
{version}(|.dev.{commit}). - nginxVersion
- Version de nginx fournie.
- loadMsec
- Heure de chargement du processus en millisecondes.
- nowMsec
- Heure actuelle en millisecondes
- connections
- active
- Le nombre actuel de connexions client actives.
- reading
- Le nombre total de connexions client en lecture.
- writing
- Le nombre total de connexions client en écriture.
- waiting
- Le nombre total de connexions client en attente.
- accepted
- Le nombre total de connexions client acceptées.
- handled
- Le nombre total de connexions client traitées.
- requests
- Le nombre total de connexions client demandées.
- sharedZones
- name
- Le nom de la mémoire partagée spécifié dans la configuration.(défaut :
vhost_traffic_status)
- Le nom de la mémoire partagée spécifié dans la configuration.(défaut :
- maxSize
- La limite de la taille maximale de la mémoire partagée spécifiée dans la configuration.
- usedSize
- La taille actuelle de la mémoire partagée.
- usedNode
- Le nombre actuel de nœuds utilisant la mémoire partagée. On peut obtenir une taille approximative pour un nœud avec la formule suivante : (usedSize / usedNode)
- freeSize
- L'espace restant dans la mémoire partagée pour plus de nœuds. usedSize ci-dessus est la somme des tailles des nœuds, ce qui n'est pas ce que la zone a dépensé, car l'allocateur de dalles distribue une page entière ou un emplacement entier pour chacun d'eux. Une zone cesse donc d'accepter des nœuds alors que usedSize est toujours inférieur à maxSize, et c'est cette valeur qui l'indique. Un nœud est plus grand qu'une demi-page, donc là où une page fait 4k, c'est l'espace pour plus de nœuds ; là où la page est plus grande, c'est une limite inférieure, car une page partiellement utilisée peut encore en contenir un.
- serverZones
- requestCounter
- Le nombre total de requêtes client reçues des clients.
- inBytes
- Le nombre total d'octets reçus des clients.
- outBytes
- Le nombre total d'octets envoyés aux clients.
- responses
- 1xx, 2xx, 3xx, 4xx, 5xx
- Le nombre de réponses avec les codes de statut 1xx, 2xx, 3xx, 4xx et 5xx.
- miss
- Le nombre d'échecs de cache.
- bypass
- Le nombre de contournements de cache.
- expired
- Le nombre de caches expirés.
- stale
- Le nombre de caches obsolètes.
- updating
- Le nombre de mises à jour de cache.
- revalidated
- Le nombre de caches revalidés.
- hit
- Le nombre de succès de cache.
- scarce
- Le nombre de caches rares.
- requestMsecCounter
- Le nombre de temps de traitement de requête accumulés en millisecondes.
- requestMsec
- La moyenne des temps de traitement de requête en millisecondes.
- requestMsecs
- times
- Les temps en millisecondes aux temps de traitement de requête.
- msecs
- Les temps de traitement de requête en millisecondes.
- requestBuckets
- msecs
- Les valeurs de compartiment de l'histogramme définies par la directive
vhost_traffic_status_histogram_buckets. - counters
- Les valeurs cumulatives car chaque valeur de compartiment est supérieure ou égale au temps de traitement de requête.
- filterZones
- Il fournit les mêmes champs que
serverZonessauf qu'il inclut les noms de groupes. - upstreamZones
- server
- Une adresse du serveur.
- requestCounter
- Le nombre total de connexions client transférées vers ce serveur.
- inBytes
- Le nombre total d'octets reçus de ce serveur.
- outBytes
- Le nombre total d'octets envoyés à ce serveur.
- responses
- 1xx, 2xx, 3xx, 4xx, 5xx
- Le nombre de réponses avec les codes de statut 1xx, 2xx, 3xx, 4xx et 5xx.
- requestMsecCounter
- Le nombre de temps de traitement de requête accumulés incluant l'upstream en millisecondes.
- requestMsec
- La moyenne des temps de traitement de requête incluant l'upstream en millisecondes.
- requestMsecs
- times
- Les temps en millisecondes aux temps de traitement de requête.
- msecs
- Les temps de traitement de requête incluant l'upstream en millisecondes.
- requestBuckets
- msecs
- Les valeurs de compartiment de l'histogramme définies par la directive
vhost_traffic_status_histogram_buckets. - counters
- Les valeurs cumulatives car chaque valeur de compartiment est supérieure ou égale au temps de traitement de requête incluant l'upstream.
- responseMsecCounter
- Le nombre de temps de traitement de réponse uniquement upstream accumulés en millisecondes.
- responseMsec
- La moyenne des temps de traitement de réponse uniquement upstream en millisecondes.
- responseMsecs
- times
- Les temps en millisecondes aux temps de traitement de requête.
- msecs
- Les temps de traitement de réponse uniquement upstream en millisecondes.
- responseBuckets
- msecs
- Les valeurs de compartiment de l'histogramme définies par la directive
vhost_traffic_status_histogram_buckets. - counters
- Les valeurs cumulatives car chaque valeur de compartiment est supérieure ou égale au temps de traitement de réponse uniquement upstream.
- weight
- Paramètre
weightactuel du serveur.
- Paramètre
- maxFails
- Paramètre
max_failsactuel du serveur.
- Paramètre
- failTimeout
- Paramètre
fail_timeoutactuel du serveur.
- Paramètre
- backup
- Paramètre
backupactuel du serveur.
- Paramètre
- down
- Paramètre
downactuel du serveur. Fondamentalement, ce n'est qu'une marque du serveur down du ngx_http_upstream_module (par exempleserver backend3.example.com down), pas l'état réel du serveur upstream. Il changera à l'état réel si vous activez la directive upstream zone.
- Paramètre
- cacheZones
- maxSize
- La limite de la taille maximale du cache spécifiée dans la configuration. Si
max_sizedans la directiveproxy_cache_pathn'est pas spécifié, la valeur dépendante du systèmeNGX_MAX_OFF_T_VALUEest assignée par défaut. En d'autres termes, cette valeur provient de nginx, pas de ce que j'ai spécifié.
- La limite de la taille maximale du cache spécifiée dans la configuration. Si
- usedSize
- La taille actuelle du cache. Cette valeur est tirée de nginx comme la valeur
maxSizeci-dessus.
- La taille actuelle du cache. Cette valeur est tirée de nginx comme la valeur
- inBytes
- Le nombre total d'octets reçus du cache.
- outBytes
- Le nombre total d'octets envoyés depuis le cache.
- responses
- miss
- Le nombre d'échecs de cache.
- bypass
- Le nombre de contournements de cache.
- expired
- Le nombre de caches expirés.
- stale
- Le nombre de caches obsolètes.
- updating
- Le nombre de mises à jour de cache.
- revalidated
- Le nombre de caches revalidés.
- hit
- Le nombre de succès de cache.
- scarce
- Le nombre de caches rares.
Json utilisé par control
/{status_uri}/control?cmd=reset&...
/{status_uri}/control?cmd=delete&...
- processingReturn
- Le résultat vrai ou faux.
- processingCommandString
- La chaîne de commande demandée.
- processingGroupString
- La chaîne de groupe demandée.
- processingZoneString
- La chaîne de zone demandée.
- processingCounts
- Le nombre de traitements réel.
Variables
Les variables intégrées suivantes sont fournies :
- $vts_request_counter
- Le nombre total de requêtes client reçues des clients.
- $vts_in_bytes
- Le nombre total d'octets reçus des clients.
- $vts_out_bytes
- Le nombre total d'octets envoyés aux clients.
- $vts_1xx_counter
- Le nombre de réponses avec les codes de statut 1xx.
- $vts_2xx_counter
- Le nombre de réponses avec les codes de statut 2xx.
- $vts_3xx_counter
- Le nombre de réponses avec les codes de statut 3xx.
- $vts_4xx_counter
- Le nombre de réponses avec les codes de statut 4xx.
- $vts_5xx_counter
- Le nombre de réponses avec les codes de statut 5xx.
- $vts_cache_miss_counter
- Le nombre d'échecs de cache.
- $vts_cache_bypass_counter
- Le nombre de contournements de cache.
- $vts_cache_expired_counter
- Le nombre de caches expirés.
- $vts_cache_stale_counter
- Le nombre de caches obsolètes.
- $vts_cache_updating_counter
- Le nombre de mises à jour de cache.
- $vts_cache_revalidated_counter
- Le nombre de caches revalidés.
- $vts_cache_hit_counter
- Le nombre de succès de cache.
- $vts_cache_scarce_counter
- Le nombre de caches rares.
- $vts_request_time_counter
- Le nombre de temps de traitement de requête accumulés.
- $vts_request_time
- La moyenne des temps de traitement de requête.
Limite
Il est possible de limiter le trafic total par hôte en utilisant la directive
vhost_traffic_status_limit_traffic.
Il est également possible de limiter tout le trafic en utilisant la directive
vhost_traffic_status_limit_traffic_by_set_key.
Lorsque la limite est dépassée, le serveur retournera l'erreur 503
(Service Temporairement Indisponible) en réponse à une requête.
Le code de retour peut être modifié.
Pour limiter le trafic pour un serveur
http {
vhost_traffic_status_zone;
...
server {
server_name *.example.org;
vhost_traffic_status_limit_traffic in:64G;
vhost_traffic_status_limit_traffic out:1024G;
...
}
}
- Limite le trafic total entrant/sortant sur
*.example.orgà 64G et 1024G respectivement. Cela fonctionne individuellement pour chaque domaine si la directivevhost_traffic_status_filter_by_hostest activée.
Pour limiter le trafic pour un filtre
http {
geoip_country /usr/share/GeoIP/GeoIP.dat;
vhost_traffic_status_zone;
...
server {
server_name example.org;
vhost_traffic_status_filter_by_set_key $geoip_country_code country::$server_name;
vhost_traffic_status_limit_traffic_by_set_key FG@country::$server_name@US out:1024G;
vhost_traffic_status_limit_traffic_by_set_key FG@country::$server_name@CN out:2048G;
...
}
}
- Limite le trafic total vers les US et la Chine sur
example.orgà 1024G et 2048G respectivement.
Pour limiter le trafic pour un upstream
```Nginx http {
vhost_traffic_status_zone;
...
upstream backend {
server 10.10.10.17:80;
server 10.10.10