vts: Módulo de estado de tráfico de hosts virtuales de NGINX
Instalación
Puede instalar este módulo en cualquier distribución basada en RHEL, incluyendo, pero no limitado a:
- RedHat Enterprise Linux 7, 8, 9 y 10
- CentOS 7, 8, 9
- AlmaLinux 8, 9
- Rocky Linux 8, 9
- Amazon Linux 2 y 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
Habilite el módulo añadiendo lo siguiente al principio de /etc/nginx/nginx.conf:
load_module modules/ngx_http_vhost_traffic_status_module.so;
Este documento describe nginx-module-vts v0.2.7 publicado el 08 de agosto de 2026.
Módulo de estado de tráfico de hosts virtuales de Nginx
Prueba
Ejecute sudo prove -r t después de haber instalado este módulo. Se requiere sudo porque
la prueba requiere que Nginx escuche en el puerto 80.
Capturas de pantalla


Sinopsis
http {
vhost_traffic_status_zone;
...
server {
...
location /status {
vhost_traffic_status_display;
vhost_traffic_status_display_format html;
}
}
}
Descripción
Este es un módulo de Nginx que proporciona acceso a la información de estado de los hosts virtuales. Contiene el estado actual, como servidores, upstreams y cachés. Es similar a la monitorización de actividad en vivo de nginx plus. El html integrado también está tomado de la página de demostración de la versión anterior.
En primer lugar, la directiva vhost_traffic_status_zone es obligatoria,
y luego, si se establece la directiva vhost_traffic_status_display, se puede acceder de la siguiente manera:
- /status/format/json
- Si solicita
/status/format/json, responderá con un documento JSON que contiene los datos de actividad actuales para usar en paneles en vivo y herramientas de monitoreo de terceros. - /status/format/html
- Si solicita
/status/format/html, responderá con el panel en vivo integrado en HTML que solicita internamente a/status/format/json. - /status/format/jsonp
- Si solicita
/status/format/jsonp, responderá con una función de callback JSONP que contiene los datos de actividad actuales para usar en paneles en vivo y herramientas de monitoreo de terceros. - /status/format/prometheus
- Si solicita
/status/format/prometheus, responderá con un documento prometheus que contiene los datos de actividad actuales. - /status/control
- Si solicita
/status/control, responderá con un documento JSON después de restablecer o eliminar zonas mediante una cadena de consulta. Consulte Control.
El documento JSON contiene lo siguiente:
{
"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
- Versión básica, tiempo de actividad ((nowMsec - loadMsec)/1000)
- nowMsec, loadMsec están en milisegundos.
- connections
- Conexiones y solicitudes totales (igual que stub_status_module en NGINX)
- sharedZones
- La información de memoria compartida utilizada en nginx-module-vts.
- serverZones
- Tráfico (entrada/salida) y recuentos de solicitudes y respuestas y proporción de aciertos de caché por cada zona de servidor
- Tráfico total (entrada/salida) y recuentos de solicitudes y respuestas (el nombre de la zona es
*) y proporción de aciertos - filterZones
- Tráfico (entrada/salida) y recuentos de solicitudes y respuestas y proporción de aciertos de caché por cada zona de servidor filtrada mediante la directiva
vhost_traffic_status_filter_by_set_key - Tráfico total (entrada/salida) y recuentos de solicitudes y respuestas (el nombre de la zona es
*) y proporción de aciertos filtrados mediante la directivavhost_traffic_status_filter_by_set_key - upstreamZones
- Tráfico (entrada/salida) y recuentos de solicitudes y respuestas por servidor en cada grupo de upstream
- Configuración actual (weight, maxfails, failtimeout...) en nginx.conf
- cacheZones
- Tráfico (entrada/salida) y tamaño (capacidad/usado) y proporción de aciertos por cada zona de caché cuando se utiliza la directiva proxy_cache.
Los objetos overCounts en el documento JSON son principalmente para sistemas de 32 bits y se incrementarán en 1 si su valor se desborda.
La directiva vhost_traffic_status_display_format establece el formato de salida predeterminado que es uno de json, jsonp, html, prometheus. (Predeterminado: json)
El cálculo del tráfico es el siguiente:
- ServerZones
- in += requested_bytes
- out += sent_bytes
- FilterZones
- in += requested_bytes a través del filtro
- out += sent_bytes a través del filtro
- UpstreamZones
- in += requested_bytes a través de ServerZones
- out += sent_bytes a través de ServerZones
- cacheZones
- in += requested_bytes a través de ServerZones
- out += sent_bytes a través de ServerZones
Todos los cálculos se realizan en la fase de procesamiento de registros de Nginx. Las redirecciones internas (X-Accel-Redirect o error_page) no se calculan en UpstreamZones.
Advertencias: este módulo depende del sistema de registro de nginx (NGX_HTTP_LOG_PHASE: última fase del http de nginx), por lo que el tráfico puede
en ciertas circunstancias diferir del ancho de banda real.
Websocket, descargas canceladas pueden ser causa de imprecisiones.
El funcionamiento del módulo no importa en absoluto si la directiva access_log está "on" u "off".
De nuevo, este módulo funciona bien con "access_log off".
Cuando se utilizan varios dominios, se establece el primer dominio (izquierda) de la directiva server_name.
Si no lo desea, consulte las directivas vhost_traffic_status_filter_by_host, vhost_traffic_status_filter_by_set_key.
Consulte los siguientes módulos para las estadísticas de tráfico stream:
* nginx-module-sts
* nginx-module-stream-sts
Cálculos e intervalos
Promedios
Todos los promedios se calculan actualmente como AMM(Media Aritmética) sobre los últimos 64 valores.
Control
Es posible restablecer o eliminar zonas de tráfico mediante una cadena de consulta. La solicitud responde con un documento JSON.
- Sintaxis de URI
- /
{status_uri}/control?cmd={command}&group={group}&zone={name}
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 se configura como arriba, entonces la uri de control es como example.org/status/control.
Los argumentos de solicitud disponibles son los siguientes:
* cmd=\<status|reset|delete>
* status
* Devuelve el estado de las zonas de tráfico en formato json como status/format/json.
* reset
* Restablece las zonas de tráfico sin eliminar nodos en la memoria compartida.(= inicializar a 0)
* delete
* Elimina las zonas de tráfico en la memoria compartida. Cuando se vuelve a solicitar, se recrean.
* group=\<server|filter|upstream@alone|upstream@group|cache|*>
* server
* filter
* upstream@alone
* upstream@group
* cache
* *
* zone=name
* server
* name
* filter
* filter_group@name
* upstream@group
* upstream_group@name
* upstream@alone
* @name
* cache
* name
Para obtener el estado de las zonas de tráfico sobre la marcha
Esto es similar a status/format/json excepto que puede obtener cada zona.
Para obtener todas las zonas
- Es exactamente lo mismo que
status/format/json. - /status/control?cmd=status&group=*
Para obtener zonas de grupo
- 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=*
Los valores de mainZones son los valores de estado predeterminados que incluyen hostName, moduleVersion, nginxVersion, loadMsec, nowMsec, connections.
Para obtener cada zona
- zona única en serverZones
- /status/control?cmd=status&group=server&zone=
name - zona única en filterZones
- /status/control?cmd=status&group=filter&zone=
filter_group@name - zona única en upstreamZones
- /status/control?cmd=status&group=upstream@group&zone=
upstream_group@name - zona única en upstreamZones::nogroups
- /status/control?cmd=status&group=upstream@alone&zone=
name - zona única en cacheZones
- /status/control?cmd=status&group=cache&zone=
name
Para restablecer zonas de tráfico sobre la marcha
Restablece los valores de las zonas especificadas a 0.
Para restablecer todas las zonas
- /status/control?cmd=reset&group=*
Para restablecer zonas de grupo
- 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=*
Para restablecer cada zona
- zona única en serverZones
- /status/control?cmd=reset&group=server&zone=
name - zona única en filterZones
- /status/control?cmd=reset&group=filter&zone=
filter_group@name - zona única en upstreamZones
- /status/control?cmd=reset&group=upstream@group&zone=
upstream_group@name - zona única en upstreamZones::nogroups
- /status/control?cmd=reset&group=upstream@alone&zone=
name - zona única en cacheZones
- /status/control?cmd=reset&group=cache&zone=
name
Para eliminar zonas de tráfico sobre la marcha
Elimina las zonas especificadas en la memoria compartida.
Para eliminar todas las zonas
- /status/control?cmd=delete&group=*
Para eliminar zonas de grupo
- 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=*
Para eliminar cada zona
- zona única en serverZones
- /status/control?cmd=delete&group=server&zone=
name - zona única en filterZones
- /status/control?cmd=delete&group=filter&zone=
filter_group@name - zona única en upstreamZones
- /status/control?cmd=delete&group=upstream@group&zone=
upstream_group@name - zona única en upstreamZones::nogroups
- /status/control?cmd=delete&group=upstream@alone&zone=
name - zona única en cacheZones
- /status/control?cmd=delete&group=cache&zone=
name
Set
Puede obtener los valores de estado en la configuración de nginx por separado usando la directiva vhost_traffic_status_set_by_filter.
Puede adquirir casi todos los valores de estado y el valor obtenido se almacena en una variable definida por el usuario que es el primer argumento.
- Sintaxis de la directiva
- vhost_traffic_status_set_by_filter $variable group/zone/name
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;
}
}
}
Las configuraciones anteriores son las siguientes:
- $requestCounter
- serverZones -> example.org -> requestCounter
- $requestCounterKR
- filterZones -> country::example.org -> KR -> requestCounter
- $requestCounterB1
- upstreamZones -> backend -> 10.0.10.11:80 -> requestCounter
Consulte la directiva vhost_traffic_status_set_by_filter para un uso detallado.
JSON
La siguiente información de estado se proporciona en formato JSON:
Json utilizado por status
/{status_uri}/format/json
/{status_uri}/control?cmd=status&...
- hostName
- Nombre del host.
- moduleVersion
- Versión del módulo en formato
{version}(|.dev.{commit}). - nginxVersion
- Versión de nginx proporcionada.
- loadMsec
- Tiempo de proceso cargado en milisegundos.
- nowMsec
- Hora actual en milisegundos
- connections
- active
- El número actual de conexiones de clientes activas.
- reading
- El número total de conexiones de clientes en lectura.
- writing
- El número total de conexiones de clientes en escritura.
- waiting
- El número total de conexiones de clientes en espera.
- accepted
- El número total de conexiones de clientes aceptadas.
- handled
- El número total de conexiones de clientes gestionadas.
- requests
- El número total de conexiones de clientes solicitadas.
- sharedZones
- name
- El nombre de la memoria compartida especificada en la configuración.(predeterminado:
vhost_traffic_status)
- El nombre de la memoria compartida especificada en la configuración.(predeterminado:
- maxSize
- El límite del tamaño máximo de la memoria compartida especificada en la configuración.
- usedSize
- El tamaño actual de la memoria compartida.
- usedNode
- El número actual de nodos que utilizan la memoria compartida. Puede obtener un tamaño aproximado para un nodo con la siguiente fórmula: (usedSize / usedNode)
- freeSize
- El espacio que le queda a la memoria compartida para más nodos. usedSize anterior es la suma de los tamaños de los nodos, que no es lo que la zona ha gastado, porque el asignador de losas entrega una página completa o una ranura completa para cada uno de ellos. Por lo tanto, una zona deja de aceptar nodos mientras usedSize todavía lee por debajo de maxSize, y este es el valor que lo dice. Un nodo es más grande que media página, por lo que donde una página es de 4k este es el espacio para más de ellos; donde la página es más grande es un límite inferior, ya que una página parcialmente utilizada aún puede contener uno.
- serverZones
- requestCounter
- El número total de solicitudes de clientes recibidas de los clientes.
- inBytes
- El número total de bytes recibidos de los clientes.
- outBytes
- El número total de bytes enviados a los clientes.
- responses
- 1xx, 2xx, 3xx, 4xx, 5xx
- El número de respuestas con códigos de estado 1xx, 2xx, 3xx, 4xx y 5xx.
- miss
- El número de fallos de caché.
- bypass
- El número de omisiones de caché.
- expired
- El número de cachés caducadas.
- stale
- El número de cachés obsoletas.
- updating
- El número de cachés en actualización.
- revalidated
- El número de cachés revalidadas.
- hit
- El número de aciertos de caché.
- scarce
- El número de cachés escasas.
- requestMsecCounter
- El número de tiempo de procesamiento de solicitudes acumulado en milisegundos.
- requestMsec
- El promedio de los tiempos de procesamiento de solicitudes en milisegundos.
- requestMsecs
- times
- Los tiempos en milisegundos en los tiempos de procesamiento de solicitudes.
- msecs
- Los tiempos de procesamiento de solicitudes en milisegundos.
- requestBuckets
- msecs
- Los valores de los buckets del histograma establecidos por la directiva
vhost_traffic_status_histogram_buckets. - counters
- Los valores acumulativos porque cada valor de bucket es mayor o igual que el tiempo de procesamiento de la solicitud.
- filterZones
- Proporciona los mismos campos que
serverZonesexcepto que incluye nombres de grupo. - upstreamZones
- server
- Una dirección del servidor.
- requestCounter
- El número total de conexiones de clientes reenviadas a este servidor.
- inBytes
- El número total de bytes recibidos de este servidor.
- outBytes
- El número total de bytes enviados a este servidor.
- responses
- 1xx, 2xx, 3xx, 4xx, 5xx
- El número de respuestas con códigos de estado 1xx, 2xx, 3xx, 4xx y 5xx.
- requestMsecCounter
- El número de tiempo de procesamiento de solicitudes acumulado incluyendo upstream en milisegundos.
- requestMsec
- El promedio de los tiempos de procesamiento de solicitudes incluyendo upstream en milisegundos.
- requestMsecs
- times
- Los tiempos en milisegundos en los tiempos de procesamiento de solicitudes.
- msecs
- Los tiempos de procesamiento de solicitudes incluyendo upstream en milisegundos.
- requestBuckets
- msecs
- Los valores de los buckets del histograma establecidos por la directiva
vhost_traffic_status_histogram_buckets. - counters
- Los valores acumulativos porque cada valor de bucket es mayor o igual que el tiempo de procesamiento de la solicitud incluyendo upstream.
- responseMsecCounter
- El número de tiempo de procesamiento de respuesta de solo upstream acumulado en milisegundos.
- responseMsec
- El promedio de los tiempos de procesamiento de respuesta de solo upstream en milisegundos.
- responseMsecs
- times
- Los tiempos en milisegundos en los tiempos de procesamiento de solicitudes.
- msecs
- Los tiempos de procesamiento de respuesta de solo upstream en milisegundos.
- responseBuckets
- msecs
- Los valores de los buckets del histograma establecidos por la directiva
vhost_traffic_status_histogram_buckets. - counters
- Los valores acumulativos porque cada valor de bucket es mayor o igual que el tiempo de procesamiento de respuesta de solo upstream.
- weight
- Configuración actual de
weightdel servidor.
- Configuración actual de
- maxFails
- Configuración actual de
max_failsdel servidor.
- Configuración actual de
- failTimeout
- Configuración actual de
fail_timeoutdel servidor.
- Configuración actual de
- backup
- Configuración actual de
backupdel servidor.
- Configuración actual de
- down
- Configuración actual de
downdel servidor. Básicamente, esto es solo una marca del servidor down del ngx_http_upstream_module (ej.server backend3.example.com down), no el estado real del servidor upstream. Cambiará al estado real si habilita la directiva de zona upstream.
- Configuración actual de
- cacheZones
- maxSize
- El límite del tamaño máximo de la caché especificada en la configuración. Si
max_sizeen la directivaproxy_cache_pathno se especifica, se asigna el valor dependiente del sistemaNGX_MAX_OFF_T_VALUEpor defecto. En otras palabras, este valor es de nginx, no lo que yo especifiqué.
- El límite del tamaño máximo de la caché especificada en la configuración. Si
- usedSize
- El tamaño actual de la caché. Este valor se toma de nginx como el valor
maxSizeanterior.
- El tamaño actual de la caché. Este valor se toma de nginx como el valor
- inBytes
- El número total de bytes recibidos de la caché.
- outBytes
- El número total de bytes enviados desde la caché.
- responses
- miss
- El número de fallos de caché.
- bypass
- El número de omisiones de caché.
- expired
- El número de cachés caducadas.
- stale
- El número de cachés obsoletas.
- updating
- El número de cachés en actualización.
- revalidated
- El número de cachés revalidadas.
- hit
- El número de aciertos de caché.
- scarce
- El número de cachés escasas.
Json utilizado por control
/{status_uri}/control?cmd=reset&...
/{status_uri}/control?cmd=delete&...
- processingReturn
- El resultado de verdadero o falso.
- processingCommandString
- La cadena de comando solicitada.
- processingGroupString
- La cadena de grupo solicitada.
- processingZoneString
- La cadena de zona solicitada.
- processingCounts
- El número de procesamiento real.
Variables
Se proporcionan las siguientes variables integradas:
- $vts_request_counter
- El número total de solicitudes de clientes recibidas de los clientes.
- $vts_in_bytes
- El número total de bytes recibidos de los clientes.
- $vts_out_bytes
- El número total de bytes enviados a los clientes.
- $vts_1xx_counter
- El número de respuestas con códigos de estado 1xx.
- $vts_2xx_counter
- El número de respuestas con códigos de estado 2xx.
- $vts_3xx_counter
- El número de respuestas con códigos de estado 3xx.
- $vts_4xx_counter
- El número de respuestas con códigos de estado 4xx.
- $vts_5xx_counter
- El número de respuestas con códigos de estado 5xx.
- $vts_cache_miss_counter
- El número de fallos de caché.
- $vts_cache_bypass_counter
- El número de omisiones de caché.
- $vts_cache_expired_counter
- El número de cachés caducadas.
- $vts_cache_stale_counter
- El número de cachés obsoletas.
- $vts_cache_updating_counter
- El número de cachés en actualización.
- $vts_cache_revalidated_counter
- El número de cachés revalidadas.
- $vts_cache_hit_counter
- El número de aciertos de caché.
- $vts_cache_scarce_counter
- El número de cachés escasas.
- $vts_request_time_counter
- El número de tiempo de procesamiento de solicitudes acumulado.
- $vts_request_time
- El promedio de los tiempos de procesamiento de solicitudes.
Límite
Es posible limitar el tráfico total por cada host utilizando la directiva
vhost_traffic_status_limit_traffic.
También es posible limitar todo el tráfico utilizando la directiva
vhost_traffic_status_limit_traffic_by_set_key.
Cuando se excede el límite, el servidor devolverá el error 503
(Service Temporarily Unavailable) en respuesta a una solicitud.
El código de retorno se puede cambiar.
Para limitar el tráfico del servidor
http {
vhost_traffic_status_zone;
...
server {
server_name *.example.org;
vhost_traffic_status_limit_traffic in:64G;
vhost_traffic_status_limit_traffic out:1024G;
...
}
}
- Limita el tráfico total de entrada/salida en
*.example.orga 64G y 1024G respectivamente. Funciona individualmente por cada dominio si la directivavhost_traffic_status_filter_by_hostestá habilitada.
Para limitar el tráfico del filtro
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;
...
}
}
- Limita el tráfico total de entrada a US y CN en
example.orga 1024G y 2048G respectivamente.
Para limitar el tráfico del upstream
http {
vhost_traffic_status_zone;
...
upstream backend {
server 10.10.10.17:80;
server 10.10.10.18:80;
}
server {
server_name example.org;
location /backend {
vhost_traffic_status_limit_traffic_by_set_key UG@[email protected]:80 in:512G;
vhost_traffic_status_limit_traffic_by_set_key UG@[email protected]:80 in:1024G;
proxy_pass http://backend;
}
...
}
}