vts
# *vts*: Модуль статуса трафика виртуального хоста NGINX
## Установка
Вы можете установить этот модуль в любой дистрибутив на базе RHEL, включая, но не ограничиваясь:
* RedHat Enterprise Linux 7, 8, 9 и 10
* CentOS 7, 8, 9
* AlmaLinux 8, 9
* Rocky Linux 8, 9
* Amazon Linux 2 и Amazon Linux 2023
=== "CentOS/RHEL 8+, Fedora Linux, Amazon Linux 2023+"
```bash
dnf -y install https://extras.getpagespeed.com/release-latest.rpm
dnf -y install nginx-module-vts
```
=== "CentOS/RHEL 7 и Amazon Linux 2"
```bash
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
```
Включите модуль, добавив следующее в начале файла `/etc/nginx/nginx.conf`:
```nginx
load_module modules/ngx_http_vhost_traffic_status_module.so;
Этот документ описывает nginx-module-vts v0.2.6 выпущенный 29 июля 2026 года.
Модуль статуса трафика виртуального хоста NGINX
Тест
Запустите sudo prove -r t после установки этого модуля. sudo требуется, потому что
тест требует, чтобы NGINX слушал на порту 80.
Скриншоты


Синопсис
http {
vhost_traffic_status_zone;
...
server {
...
location /status {
vhost_traffic_status_display;
vhost_traffic_status_display_format html;
}
}
}
Описание
Это модуль NGINX, который предоставляет доступ к информации о статусе виртуального хоста. Он содержит текущий статус, такой как серверы, upstream, кэши. Это похоже на мониторинг активности в реальном времени в nginx plus. Встроенный HTML также взят со страницы демонстрации старой версии.
Прежде всего, директива vhost_traffic_status_zone обязательна,
а затем, если установлена директива vhost_traffic_status_display, доступ к ней можно получить следующим образом:
- /status/format/json
- Если вы запрашиваете
/status/format/json, ответ будет содержать JSON-документ с текущими данными активности для использования в панелях мониторинга в реальном времени и сторонних инструментах мониторинга. - /status/format/html
- Если вы запрашиваете
/status/format/html, ответ будет содержать встроенную панель мониторинга в HTML, которая запрашивает внутренне/status/format/json. - /status/format/jsonp
- Если вы запрашиваете
/status/format/jsonp, ответ будет содержать функцию обратного вызова JSONP с текущими данными активности для использования в панелях мониторинга в реальном времени и сторонних инструментах мониторинга. - /status/format/prometheus
- Если вы запрашиваете
/status/format/prometheus, ответ будет содержать документ prometheus с текущими данными активности. - /status/control
- Если вы запрашиваете
/status/control, ответ будет содержать JSON-документ после сброса или удаления зон через строку запроса. См. Управление.
JSON-документ содержит следующее:
{
"hostName": ...,
"moduleVersion": ...,
"nginxVersion": ...,
"loadMsec": ...,
"nowMsec": ...,
"connections": {
"active":...,
"reading":...,
"writing":...,
"waiting":...,
"accepted":...,
"handled":...,
"requests":...
},
"sharedZones": {
"name":...,
"maxSize":...,
"usedSize":...,
"usedNode":...
},
"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
- Базовая версия, время работы((nowMsec - loadMsec)/1000)
- nowMsec, loadMsec в миллисекундах.
- connections
- Общее количество соединений и запросов (то же, что и stub_status_module в NGINX)
- sharedZones
- Информация о общей памяти, используемой в nginx-module-vts.
- serverZones
- Трафик (входящий/исходящий) и количество запросов и ответов, а также коэффициент попадания кэша для каждой зоны сервера
- Общий трафик (входящий/исходящий) и количество запросов и ответов (имя зоны -
*) и коэффициент попадания - filterZones
- Трафик (входящий/исходящий) и количество запросов и ответов, а также коэффициент попадания кэша для каждой зоны сервера, отфильтрованной через директиву
vhost_traffic_status_filter_by_set_key - Общий трафик (входящий/исходящий) и количество запросов и ответов (имя зоны -
*) и коэффициент попадания, отфильтрованный через директивуvhost_traffic_status_filter_by_set_key - upstreamZones
- Трафик (входящий/исходящий) и количество запросов и ответов для каждого сервера в каждой группе upstream
- Текущие настройки (вес, максимальные ошибки, тайм-аут на сбой...) в nginx.conf
- cacheZones
- Трафик (входящий/исходящий) и размер (емкость/используемый) и коэффициент попадания для каждой зоны кэша при использовании директивы proxy_cache.
Объекты overCounts в JSON-документе в основном предназначены для 32-битной системы и будут увеличиваться на 1, если их значение переполнено.
Директива vhost_traffic_status_display_format устанавливает формат вывода по умолчанию, который может быть json, jsonp, html, prometheus. (По умолчанию: json)
Расчет трафика осуществляется следующим образом:
- ServerZones
- in += requested_bytes
- out += sent_bytes
- FilterZones
- in += requested_bytes через фильтр
- out += sent_bytes через фильтр
- UpstreamZones
- in += requested_bytes через ServerZones
- out += sent_bytes через ServerZones
- cacheZones
- in += requested_bytes через ServerZones
- out += sent_bytes через ServerZones
Все расчеты выполняются на этапе обработки логов NGINX. Внутренние перенаправления (X-Accel-Redirect или error_page) не учитываются в UpstreamZones.
Предостережения: этот модуль зависит от системы логирования NGINX (NGX_HTTP_LOG_PHASE: последний этап http NGINX), поэтому трафик может быть
в определенных обстоятельствах отличен от реального трафика по пропускной способности.
Websocket, отмененные загрузки могут быть причиной неточностей.
Работа модуля не зависит от того, включена или выключена директива access_log.
Снова, этот модуль хорошо работает с "access_log off".
При использовании нескольких доменов он устанавливается на первый домен (слева) директивы server_name.
Если вы не хотите этого, смотрите директивы vhost_traffic_status_filter_by_host, vhost_traffic_status_filter_by_set_key.
Смотрите следующие модули для статистики трафика stream:
* nginx-module-sts
* nginx-module-stream-sts
Расчеты и интервалы
Средние значения
Все средние значения в настоящее время рассчитываются как AMM (арифметическое среднее) за последние 64 значения.
Управление
Можно сбросить или удалить зоны трафика через строку запроса. Запрос отвечает JSON-документом.
- Синтаксис 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;
}
}
}
Если это установлено как выше, то контрольный URI будет выглядеть как example.org/status/control.
Доступные аргументы запроса следующие:
* cmd=\<status|reset|delete>
* status
* Возвращает статус зон трафика в формате json, как status/format/json.
* reset
* Сбрасывает зоны трафика без удаления узлов в общей памяти. (= инициализация в 0)
* delete
* Удаляет зоны трафика в общей памяти. при повторном запросе они будут воссозданы.
* 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
Чтобы получить статус зон трафика на лету
Это похоже на status/format/json, за исключением того, что можно получить каждую зону.
Чтобы получить все зоны
- Это точно так же, как
status/format/json. - /status/control?cmd=status&group=*
Чтобы получить группы зон
- 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=*
Значения mainZones являются значениями статуса по умолчанию, включая hostName, moduleVersion, nginxVersion, loadMsec, nowMsec, connections.
Чтобы получить каждую зону
- отдельная зона в serverZones
- /status/control?cmd=status&group=server&zone=
name - отдельная зона в filterZones
- /status/control?cmd=status&group=filter&zone=
filter_group@name - отдельная зона в upstreamZones
- /status/control?cmd=status&group=upstream@group&zone=
upstream_group@name - отдельная зона в upstreamZones::nogroups
- /status/control?cmd=status&group=upstream@alone&zone=
name - отдельная зона в cacheZones
- /status/control?cmd=status&group=cache&zone=
name
Чтобы сбросить зоны трафика на лету
Это сбрасывает значения указанных зон в 0.
Чтобы сбросить все зоны
- /status/control?cmd=reset&group=*
Чтобы сбросить группы зон
- 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=*
Чтобы сбросить каждую зону
- отдельная зона в serverZones
- /status/control?cmd=reset&group=server&zone=
name - отдельная зона в filterZones
- /status/control?cmd=reset&group=filter&zone=
filter_group@name - отдельная зона в upstreamZones
- /status/control?cmd=reset&group=upstream@group&zone=
upstream_group@name - отдельная зона в upstreamZones::nogroups
- /status/control?cmd=reset&group=upstream@alone&zone=
name - отдельная зона в cacheZones
- /status/control?cmd=reset&group=cache&zone=
name
Чтобы удалить зоны трафика на лету
Это удаляет указанные зоны в общей памяти.
Чтобы удалить все зоны
- /status/control?cmd=delete&group=*
Чтобы удалить группы зон
- 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=*
Чтобы удалить каждую зону
- отдельная зона в serverZones
- /status/control?cmd=delete&group=server&zone=
name - отдельная зона в filterZones
- /status/control?cmd=delete&group=filter&zone=
filter_group@name - отдельная зона в upstreamZones
- /status/control?cmd=delete&group=upstream@group&zone=
upstream_group@name - отдельная зона в upstreamZones::nogroups
- /status/control?cmd=delete&group=upstream@alone&zone=
name - отдельная зона в cacheZones
- /status/control?cmd=delete&group=cache&zone=
name
Установка
Можно получить значения статуса в конфигурации nginx отдельно, используя директиву vhost_traffic_status_set_by_filter.
Можно получить почти все значения статуса, и полученное значение сохраняется в пользовательской переменной, которая является первым аргументом.
- Синтаксис директивы
- 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/backend@10.10.10.11:80/requestCounter;
proxy_pass http://backend;
}
}
}
Вышеуказанные настройки следующие:
- $requestCounter
- serverZones -> example.org -> requestCounter
- $requestCounterKR
- filterZones -> country::example.org -> KR -> requestCounter
- $requestCounterB1
- upstreamZones -> backend -> 10.0.10.11:80 -> requestCounter
Пожалуйста, смотрите директиву vhost_traffic_status_set_by_filter для подробного использования.
JSON
Следующая информация о статусе предоставляется в формате JSON:
Json, используемый статусом
/{status_uri}/format/json
/{status_uri}/control?cmd=status&...
- hostName
- Имя хоста.
- moduleVersion
- Версия модуля в формате
{version}(|.dev.{commit}). - nginxVersion
- Версия предоставленного.
- loadMsec
- Время загрузки процесса в миллисекундах.
- nowMsec
- Текущее время в миллисекундах
- connections
- active
- Текущее количество активных клиентских соединений.
- reading
- Общее количество читающих клиентских соединений.
- writing
- Общее количество пишущих клиентских соединений.
- waiting
- Общее количество ожидающих клиентских соединений.
- accepted
- Общее количество принятых клиентских соединений.
- handled
- Общее количество обработанных клиентских соединений.
- requests
- Общее количество запрашиваемых клиентских соединений.
- sharedZones
- name
- Имя общей памяти, указанное в конфигурации. (по умолчанию:
vhost_traffic_status)
- Имя общей памяти, указанное в конфигурации. (по умолчанию:
- maxSize
- Ограничение на максимальный размер общей памяти, указанное в конфигурации.
- usedSize
- Текущий размер общей памяти.
- usedNode
- Текущее количество узлов, используемых в общей памяти. Можно получить приблизительный размер одного узла по следующей формуле: (usedSize / usedNode)
- serverZones
- requestCounter
- Общее количество клиентских запросов, полученных от клиентов.
- inBytes
- Общее количество байтов, полученных от клиентов.
- outBytes
- Общее количество байтов, отправленных клиентам.
- responses
- 1xx, 2xx, 3xx, 4xx, 5xx
- Количество ответов с кодами состояния 1xx, 2xx, 3xx, 4xx и 5xx.
- miss
- Количество пропусков кэша.
- bypass
- Количество обходов кэша.
- expired
- Количество истекших кэшей.
- stale
- Количество устаревших кэшей.
- updating
- Количество обновляющихся кэшей.
- revalidated
- Количество переутвержденных кэшей.
- hit
- Количество попаданий в кэш.
- scarce
- Количество недостатков кэша.
- requestMsecCounter
- Количество накопленного времени обработки запросов в миллисекундах.
- requestMsec
- Среднее время обработки запросов в миллисекундах.
- requestMsecs
- times
- Времена в миллисекундах при обработке запросов.
- msecs
- Времена обработки запросов в миллисекундах.
- requestBuckets
- msecs
- Значения ведра гистограммы, установленные директивой
vhost_traffic_status_histogram_buckets. - counters
- Кумулятивные значения для каждой ведерной величины, которая больше или равна времени обработки запроса.
- filterZones
- Предоставляет те же поля, что и
serverZones, за исключением того, что включает имена групп. - upstreamZones
- server
- Адрес сервера.
- requestCounter
- Общее количество клиентских соединений, перенаправленных на этот сервер.
- inBytes
- Общее количество байтов, полученных от этого сервера.
- outBytes
- Общее количество байтов, отправленных на этот сервер.
- responses
- 1xx, 2xx, 3xx, 4xx, 5xx
- Количество ответов с кодами состояния 1xx, 2xx, 3xx, 4xx и 5xx.
- requestMsecCounter
- Количество накопленного времени обработки запросов, включая upstream, в миллисекундах.
- requestMsec
- Среднее время обработки запросов, включая upstream, в миллисекундах.
- requestMsecs
- times
- Времена в миллисекундах при обработке запросов.
- msecs
- Времена обработки запросов, включая upstream, в миллисекундах.
- requestBuckets
- msecs
- Значения ведра гистограммы, установленные директивой
vhost_traffic_status_histogram_buckets. - counters
- Кумулятивные значения для каждой ведерной величины, которая больше или равна времени обработки запроса, включая upstream.
- responseMsecCounter
- Количество накопленного времени обработки ответов только upstream в миллисекундах.
- responseMsec
- Среднее время обработки ответов только upstream в миллисекундах.
- responseMsecs
- times
- Времена в миллисекундах при обработке ответов.
- msecs
- Времена обработки ответов только upstream в миллисекундах.
- responseBuckets
- msecs
- Значения ведра гистограммы, установленные директивой
vhost_traffic_status_histogram_buckets. - counters
- Кумулятивные значения для каждой ведерной величины, которая больше или равна времени обработки ответа только upstream.
- weight
- Текущая настройка
weightсервера.
- Текущая настройка
- maxFails
- Текущая настройка
max_failsсервера.
- Текущая настройка
- failTimeout
- Текущая настройка
fail_timeoutсервера.
- Текущая настройка
- backup
- Текущая настройка
backupсервера.
- Текущая настройка
- down
- Текущая настройка
downсервера. В основном это просто отметка о том, что сервер ngx_http_upstream_module отключен (например,server backend3.example.com down), а не фактическое состояние сервера upstream. Это изменится на фактическое состояние, если вы включите директиву зоны upstream.
- Текущая настройка
- cacheZones
- maxSize
- Ограничение на максимальный размер кэша, указанное в конфигурации. Если
max_sizeв директивеproxy_cache_pathне указано, по умолчанию присваивается системное значениеNGX_MAX_OFF_T_VALUE. Другими словами, это значение из nginx, а не то, что я указал.
- Ограничение на максимальный размер кэша, указанное в конфигурации. Если
- usedSize
- Текущий размер кэша. Это значение берется из nginx, как и вышеуказанное значение
maxSize.
- Текущий размер кэша. Это значение берется из nginx, как и вышеуказанное значение
- inBytes
- Общее количество байтов, полученных из кэша.
- outBytes
- Общее количество байтов, отправленных из кэша.
- responses
- miss
- Количество пропусков кэша.
- bypass
- Количество обходов кэша.
- expired
- Количество истекших кэшей.
- stale
- Количество устаревших кэшей.
- updating
- Количество обновляющихся кэшей.
- revalidated
- Количество переутвержденных кэшей.
- hit
- Количество попаданий в кэш.
- scarce
- Количество недостатков кэша.
Json, используемый управлением
/{status_uri}/control?cmd=reset&...
/{status_uri}/control?cmd=delete&...
- processingReturn
- Результат true или false.
- processingCommandString
- Запрашиваемая строка команды.
- processingGroupString
- Запрашиваемая строка группы.
- processingZoneString
- Запрашиваемая строка зоны.
- processingCounts
- Фактическое количество обработок.
Переменные
Предоставляются следующие встроенные переменные:
- $vts_request_counter
- Общее количество клиентских запросов, полученных от клиентов.
- $vts_in_bytes
- Общее количество байтов, полученных от клиентов.
- $vts_out_bytes
- Общее количество байтов, отправленных клиентам.
- $vts_1xx_counter
- Количество ответов с кодами состояния 1xx.
- $vts_2xx_counter
- Количество ответов с кодами состояния 2xx.
- $vts_3xx_counter
- Количество ответов с кодами состояния 3xx.
- $vts_4xx_counter
- Количество ответов с кодами состояния 4xx.
- $vts_5xx_counter
- Количество ответов с кодами состояния 5xx.
- $vts_cache_miss_counter
- Количество пропусков кэша.
- $vts_cache_bypass_counter
- Количество обходов кэша.
- $vts_cache_expired_counter
- Количество истекших кэшей.
- $vts_cache_stale_counter
- Количество устаревших кэшей.
- $vts_cache_updating_counter
- Количество обновляющихся кэшей.
- $vts_cache_revalidated_counter
- Количество переутвержденных кэшей.
- $vts_cache_hit_counter
- Количество попаданий в кэш.
- $vts_cache_scarce_counter
- Количество недостатков кэша.
- $vts_request_time_counter
- Количество накопленного времени обработки запросов.
- $vts_request_time
- Среднее время обработки запросов.
Ограничение
Можно ограничить общий трафик для каждого хоста, используя директиву
vhost_traffic_status_limit_traffic.
Также можно ограничить весь трафик, используя директиву
vhost_traffic_status_limit_traffic_by_set_key.
Когда лимит превышен, сервер вернет ошибку 503
(Служба временно недоступна) в ответ на запрос.
Код возврата может быть изменен.
Чтобы ограничить трафик для сервера
http {
vhost_traffic_status_zone;
...
server {
server_name *.example.org;
vhost_traffic_status_limit_traffic in:64G;
vhost_traffic_status_limit_traffic out:1024G;
...
}
}
- Ограничьте общий трафик входящего/исходящего на
*.example.orgдо 64G и 1024G соответственно. Это работает индивидуально для каждого домена, если включена директиваvhost_traffic_status_filter_by_host.
Чтобы ограничить трафик для фильтра
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;
...
}
}
- Ограничьте общий трафик, поступающий в США и КНР на
example.org, до 1024G и 2048G соответственно.
Чтобы ограничить трафик для 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@backend@10.10.10.17:80 in:512G;
vhost_traffic_status_limit_traffic_by_set_key UG@backend@10.10.10.18:80 in:1024G;
proxy_pass http://backend;
}
...
}
}
- Ограничьте общий трафик, поступающий в upstream backend на
example.org, до 512G и 1024G для каждого пира.
Предостережения: Трафик - это накопительная передача или счетчик, а не пропускная способность.
Сценарии использования
Можно рассчитать индивидуальную статистику, определяемую пользователем, с помощью директивы vhost_traffic_status_filter_by_set_key.
Чтобы рассчитать трафик для отдельной страны с использованием GeoIP
http {
geoip_country /usr/share/GeoIP/GeoIP.dat;
vhost_traffic_status_zone;
vhost_traffic_status_filter_by_set_key $geoip_country_code country::*;
...
server {
...
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;
}
}
}
- Рассчитайте трафик для отдельной страны для всех групп серверов.
- Рассчитайте трафик для отдельной страны для каждой группы серверов.
В основном, изображения флагов стран встроены в HTML.
Изображение флага страны включается, если строка country содержится
в имени группы, которое является вторым аргументом директивы vhost_traffic_status_filter_by_set_key.
Чтобы рассчитать трафик для отдельного объема хранения
http {
vhost_traffic_status_zone;
...
server {
...
location ~ ^/storage/(.+)/.*$ {
set $volume $1;
vhost_traffic_status_filter_by_set_key $volume storage::$server_name;
}
location /status {
vhost_traffic_status_display;
vhost_traffic_status_display_format html;
}
}
}
- Рассчитайте трафик для отдельного объема хранения, соответствующего регулярному выражению директивы location.
Чтобы рассчитать трафик для отдельного user agent
http {
vhost_traffic_status_zone;
map $http_user_agent $filter_user_agent {
default 'unknown';
~iPhone ios;
~Android android;
~(MSIE|Mozilla) windows;
}
vhost_traffic_status_filter_by_set_key $filter_user_agent agent::*;
...
server {
...
vhost_traffic_status_filter_by_set_key $filter_user_agent agent::$server_name;
location /status {
vhost_traffic_status_display;
vhost_traffic_status_display_format html;
}
}
}
- Рассчитайте трафик для отдельного
http_user_agent
Чтобы рассчитать трафик для детализированного кода состояния http
http {
vhost_traffic_status_zone;
server {
...
vhost_traffic_status_filter_by_set_key $status $server_name;
location /status {
vhost_traffic_status_display;
vhost_traffic_status_display_format html;
}
}
}
- Рассчитайте трафик для детализированного
http status code
Предостережения: $status переменная доступна в nginx-(1.3.2, 1.2.2).
Чтобы рассчитать трафик для динамического DNS
Если домен имеет несколько DNS A-записей, вы можете рассчитать трафик для отдельных IP-адресов для домена, используя функцию фильтра или переменную в proxy_pass.
http {
vhost_traffic_status_zone;
upstream backend {
elb.example.org:80;
}
...
server {
...
location /backend {
vhost_traffic_status_filter_by_set_key $upstream_addr upstream::backend;
proxy_pass backend;
}
}
}
- Рассчитайте трафик для отдельных IP-адресов для домена
elb.example.org. Еслиelb.example.orgимеет несколько DNS A-записей, будут отображаться все IP-адреса вfilterZones. В вышеуказанных настройках, когда NGINX запускается или перезагружает свою конфигурацию, он запрашивает DNS-сервер для разрешения домена, и DNS A-записи кэшируются в памяти. Поэтому DNS A-записи не изменяются в памяти, даже если DNS A-записи изменяются администратором DNS, если NGINX не перезапускается или не перезагружается.
http {
vhost_traffic_status_zone;
resolver 10.10.10.53 valid=10s
...
server {
...
location /backend {
set $backend_server elb.example.org;
proxy_pass http://$backend_server;
}
}
}
- Рассчитайте трафик для отдельных IP-адресов для домена
elb.example.org. Если DNS A-записьelb.example.orgизменяется, будут отображаться как старый IP, так и новый IP в::nogroups. В отличие от первой настройки группы upstream, вторая настройка работает хорошо даже если DNS A-записи изменяются администратором DNS.
Предостережения: Пожалуйста, смотрите больше деталей о DNS NGINX в
dns-service-discovery-nginx-plus.
Чтобы рассчитать трафик, кроме страницы статуса
http {
vhost_traffic_status_zone;
...
server {
...
location /status {
vhost_traffic_status_bypass_limit on;
vhost_traffic_status_bypass_stats on;
vhost_traffic_status_display;
vhost_traffic_status_display_format html;
}
}
}
- URI
/statusисключается из расчета трафика статуса и функции ограничения. Смотрите следующие директивы: - vhost_traffic_status_bypass_limit
- vhost_traffic_status_bypass_stats
Чтобы сохранить статистические данные постоянно
http {
vhost_traffic_status_zone;
vhost_traffic_status_dump /var/log/nginx/vts.db;
...
server {
...
}
}
- Директива
vhost_traffic_status_dumpсохраняет статистические данные постоянно даже если система была перезагружена или nginx был перезапущен. Пожалуйста, смотрите директиву vhost_traffic_status_dump для подробного использования.
Настройка
Чтобы настроить после установки модуля
-
Вам нужно изменить строку
{{uri}}на ваш статусный URI в status.template.html следующим образом:shell> vi share/status.template.htmlvar vtsStatusURI = "yourStatusUri/format/json", vtsUpdateInterval = 1000; -
Затем настройте и скопируйте status.template.html в корневой каталог сервера следующим образом:
shell> cp share/status.template.html /usr/share/nginx/html/status.html -
Настройте
nginx.confserver { server_name example.org; root /usr/share/nginx/html; # Перенаправить запросы на / на /status.html location = / { return 301 /status.html; } location = /status.html {} # Все, что начинается с /status (кроме /status.html), обрабатывается обработчиком статуса location /status { vhost_traffic_status_display; vhost_traffic_status_display_format json; } } -
Получите доступ к вашему html.
http://example.org/status.html
Чтобы настроить до установки модуля
-
Измените
share/status.template.html(не изменяйте строку{{uri}}) -
Воссоздайте
ngx_http_vhost_traffic_status_module_html.hследующим образом:shell> cd util shell> ./tplToDefine.sh ../share/status.template.html > ../src/ngx_http_vhost_traffic_status_module_html.h -
Добавьте модуль в конфигурацию сборки, добавив
--add-module=/path/to/nginx-module-vts -
Соберите бинарный файл nginx.
-
Установите бинарный файл nginx.
React Dashboard
Альтернативная панель управления на основе React доступна в директории front/. Она получает данные из существующего API /status/format/json и отображает те же таблицы, что и встроенная HTML-страница.
Предварительные требования
- Node.js >= 20.19 (или >= 22.12)
- npm
Обслуживание через nginx
Добавьте следующий блок location рядом с существующей конфигурацией /status:
location = /status/dashboard {
return 301 /status/dashboard/;
}
location /status/dashboard/ {
alias /path/to/nginx-module-vts/front/dist/;
index index.html;
}
После перезагрузки nginx панель управления React будет доступна по адресу /status/dashboard.
Разработка
shell> make front-dev
Сервер разработки Vite проксирует запросы /status/format/json на http://localhost:80, чтобы панель управления могла разрабатываться на работающем экземпляре nginx.
Очистка
shell> make front-clean
Удаляет front/dist/ и front/node_modules/.
Директивы

vhost_traffic_status
| - | - |
|---|---|
| Синтаксис | vhost_traffic_status \<on|off> |
| По умолчанию | off |
| Контекст | http, server, location |
Описание: Включает или отключает работу модуля.
Если вы установите директиву vhost_traffic_status_zone, она будет автоматически включена.
vhost_traffic_status_zone
| - | - |
|---|---|
| Синтаксис | vhost_traffic_status_zone [shared:name:size] |
| По умолчанию | shared:vhost_traffic_status:1m |
| Контекст | http |
Описание: Устанавливает параметры для зоны общей памяти, которая будет хранить состояния для различных ключей.
Кэш разделяется между всеми рабочими процессами.
В большинстве случаев размер общей памяти, используемой nginx-module-vts, не увеличивается значительно.
Размер общей памяти увеличивается довольно сильно при использовании директивы vhost_traffic_status_filter_by_set_key,
но если ключи фильтра фиксированы (например, общее количество кодов стран составляет около 240),
он не будет постоянно увеличиваться.
Если вы используете директиву vhost_traffic_status_filter_by_set_key, установите ее следующим образом:
- Установите размер общей памяти более 32M по умолчанию.
(
vhost_traffic_status_zone shared:vhost_traffic_status:32m) - Если сообщение (
"ngx_slab_alloc() failed: no memory in vhost_traffic_status_zone") выводится в error_log, увеличьте его до более чем (usedSize * 2).
vhost_traffic_status_dump
| - | - |
|---|---|
| Синтаксис | vhost_traffic_status_dump path [period] |
| По умолчанию | - |
| Контекст | http |
Описание: Включает дамп и восстановление статистических данных.
path - это место для дампа статистических данных. (например, /var/log/nginx/vts.db)
period - это время цикла резервного копирования. (По умолчанию: 60s)
Он резервируется немедленно, независимо от цикла резервного копирования, если nginx завершает работу по сигналу (SIGKILL).
vhost_traffic_status_display
| - | - |
|---|---|
| Синтаксис | vhost_traffic_status_display |
| По умолчанию | - |
| Контекст | http, server, location |
Описание: Включает или отключает обработчик отображения модуля.
vhost_traffic_status_display_format
| - | - |
|---|---|
| Синтаксис | vhost_traffic_status_display_format \<json|html|jsonp|prometheus> |
| По умолчанию | json |
| Контекст | http, server, location |
Описание: Устанавливает формат вывода обработчика отображения.
Если вы установите json, ответ будет в формате JSON-документа.
Если вы установите html, ответ будет содержать встроенную панель мониторинга в HTML.
Если вы установите jsonp, ответ будет содержать функцию обратного вызова JSONP (по умолчанию: ngx_http_vhost_traffic_status_jsonp_callback).
Если вы установите prometheus, ответ будет содержать документ prometheus.
vhost_traffic_status_display_jsonp
| - | - |
|---|---|
| Синтаксис | vhost_traffic_status_display_jsonp callback |
| По умолчанию | ngx_http_vhost_traffic_status_jsonp_callback |
| Контекст | http, server, location |
Описание: Устанавливает имя обратного вызова для JSONP.
vhost_traffic_status_display_sum_key
| - | - |
|---|---|
| Синтаксис | vhost_traffic_status_display_sum_key name |
| По умолчанию | * |
| Контекст | http, server, location |
Описание: Устанавливает строку ключа суммы в поле serverZones JSON. Строка ключа суммы по умолчанию - "*".
vhost_traffic_status_filter
| - | - |
|---|---|
| Синтаксис | vhost_traffic_status_filter \<on|off> |
| По умолчанию | on |
| Контекст | http, server, location |
Описание: Включает или отключает функции фильтра.
vhost_traffic_status_filter_by_host
| - | - |
|---|---|
| Синтаксис | vhost_traffic_status_filter_by_host \<on|off> |
| По умолчанию | off |
| Контекст | http, server, location |
Описание: Включает или отключает ключи по полю заголовка Host.
Если вы установите on, и директива server_name NGINX установит несколько или подстановочное имя, начинающееся с звездочки, например, “.example.org”
и запрос будет отправлен на сервер с именем хоста, таким как (a|b|c).example.org или .example.org,
то json serverZones будет напечатан следующим образом:
server {
server_name *.example.org;
vhost_traffic_status_filter_by_host on;
...
}
...
"serverZones": {
"a.example.org": {
...
},
"b.example.org": {
...
},
"c.example.org": {
...
}
...
},
...
Это предоставляет ту же функцию, что и установка vhost_traffic_status_filter_by_set_key $host.
vhost_traffic_status_filter_by_set_key
| - | - |
|---|---|
| Синтаксис | vhost_traffic_status_filter_by_set_key key [name] |
| По умолчанию | - |
| Контекст | http, server, location |
Описание: Включает ключи по пользовательской переменной.
key - это строка ключа для расчета трафика.
name - это строка группы для расчета трафика.
key и name могут содержать переменные, такие как $host, $server_name.
Группа name принадлежит filterZones, если указана.
Группа key принадлежит serverZones, если не указана вторая аргумент name.
Пример с модулем geoip выглядит следующим образом:
server {
server_name example.org;
vhost_traffic_status_filter_by_set_key $geoip_country_code country::$server_name;
...
}
...
"serverZones": {
...
},
"filterZones": {
"country::example.org": {
"KR": {
"requestCounter":...,
"inBytes":...,
"outBytes":...,
"responses":{
"1xx":...,
"2xx":...,
"3xx":...,
"4xx":...,
"5xx":...,
"miss":...,
"bypass":...,
"expired":...,
"stale":...,
"updating":...,
"revalidated":...,
"hit":...,
"scarce":...
},
"requestMsecCounter":...,
"requestMsec":...,
"requestMsecs":{
"times":[...],
"msecs":[...]
},
},
"US": {
...
},
...
},
...
},
...
vhost_traffic_status_filter_check_duplicate
| - | - |
|---|---|
| Синтаксис | vhost_traffic_status_filter_check_duplicate \<on|off> |
| По умолчанию | on |
| Контекст | http, server, location |
Описание: Включает или отключает дедупликацию vhost_traffic_status_filter_by_set_key.
Обрабатывается только одно из дублирующихся значений (key + name) в каждой директиве (http, server, location), если эта опция включена.
vhost_traffic_status_filter_max_node
| - | - |
|---|---|
| Синтаксис | vhost_traffic_status_filter_max_node number [string ...] |
| По умолчанию | 0 |
| Контекст | http |
Описание: Включает ограничение размера фильтра, используя указанные number и string значения.
Если number превышен, существующие узлы удаляются по алгоритму LRU.
Аргумент number - это размер узла, который будет ограничен.
По умолчанию значение 0 не ограничивает фильтры.
Один узел - это объект в filterZones в JSON-документе.
Аргументы string - это соответствующие строковые значения для значения группы, установленного директивой vhost_traffic_status_filter_by_set_key.
Даже если совпадает только первая часть, совпадение считается успешным, как регулярное выражение /^string.*/.
По умолчанию, если вы не устанавливаете аргументы string, то это применяется ко всем фильтрам.
Например:
$ vi nginx.conf
http {
geoip_country /usr/share/GeoIP/GeoIP.dat;
vhost_traffic_status_zone;
# Все фильтры ограничены до общего количества 16 узлов.
# vhost_traffic_status_filter_max_node 16
# Групповые строковые шаблоны `/^uris.*/` и `/^client::ports.*/` ограничены до общего количества 64 узлов.
vhost_traffic_status_filter_max_node 16 uris client::ports;
...
server {
server_name example.org;
...
vhost_traffic_status_filter_by_set_key $uri uris::$server_name;
vhost_traffic_status_filter_by_set_key $remote_port client::ports::$server_name;
vhost_traffic_status_filter_by_set_key $geoip_country_code country::$server_name;
}
}
$ for i in {0..1000}; do curl -H 'Host: example.org' -i "http://localhost:80/test$i"; done

В приведенном выше примере групповые строковые шаблоны /^uris.*/ и /^client::ports.*/ ограничены до общего количества 16 узлов.
Другие фильтры, такие как country::.*, не ограничены.
vhost_traffic_status_limit
| - | - |
|---|---|
| Синтаксис | vhost_traffic_status_limit \<on|off> |
| По умолчанию | on |
| Контекст | http, server, location |
Описание: Включает или отключает функции ограничения.
vhost_traffic_status_limit_traffic
| - | - |
|---|---|
| Синтаксис | vhost_traffic_status_limit_traffic member:size [code] |
| По умолчанию | - |
| Контекст | http, server, location |
Описание: Включает ограничение трафика для указанного member.
member - это строка члена для ограничения трафика.
size - это размер (k/m/g) для ограничения трафика.
code - это код, который будет возвращен в ответ на отклоненные запросы. (По умолчанию: 503)
Доступные строки member следующие:
* request
* Общее количество клиентских запросов, полученных от клиентов.
* in
* Общее количество байтов, полученных от клиентов.
* out
* Общее количество байтов, отправленных клиентам.
* 1xx
* Количество ответов с кодами состояния 1xx.
* 2xx
* Количество ответов с кодами состояния 2xx.
* 3xx
* Количество ответов с кодами состояния 3xx.
* 4xx
* Количество ответов с кодами состояния 4xx.
* 5xx
* Количество ответов с кодами состояния 5xx.
* cache_miss
* Количество пропусков кэша.
* cache_bypass
* Количество обходов кэша.
* cache_expired
* Количество истекших кэшей.
* cache_stale
* Количество устаревших кэшей.
* cache_updating
* Количество обновляющихся кэшей.
* cache_revalidated
* Количество переутвержденных кэшей.
* cache_hit
* Количество попаданий в кэш.
* cache_scarce
* Количество недостатков кэша.
vhost_traffic_status_limit_traffic_by_set_key
| - | - |
|---|---|
| Синтаксис | vhost_traffic_status_limit_traffic_by_set_key key member:size [code] |
| По умолчанию | - |
| Контекст | http, server, location |
Описание: Включает ограничение трафика для указанного key и member.
key - это строка ключа для ограничения трафика.
member - это строка члена для ограничения трафика.
size - это размер (k/m/g) для ограничения трафика.
code - это код, который будет возвращен в ответ на отклоненные запросы. (По умолчанию: 503)
Синтаксис key следующий:
* group@[subgroup@]name
Доступные строки group следующие:
* NO
* Группа сервера.
* UA
* Группа upstream alone.
* UG
* Группа upstream group. (используйте subgroup)
* CC
* Группа кэша.
* FG
* Группа фильтра. (используйте subgroup)
Доступные строки member следующие:
* request
* Общее количество клиентских запросов, полученных от клиентов.
* in
* Общее количество байтов, полученных от клиентов.
* out
* Общее количество байтов, отправленных клиентам.
* 1xx
* Количество ответов с кодами состояния 1xx.
* 2xx
* Количество ответов с кодами состояния 2xx.
* 3xx
* Количество ответов с кодами состояния 3xx.
* 4xx
* Количество ответов с кодами состояния 4xx.
* 5xx
* Количество ответов с кодами состояния 5xx.
* cache_miss
* Количество пропусков кэша.
* cache_bypass
* Количество обходов кэша.
* cache_expired
* Количество истекших кэшей.
* cache_stale
* Количество устаревших кэшей.
* cache_updating
* Количество обновляющихся кэшей.
* cache_revalidated
* Количество переутвержденных кэшей.
* cache_hit
* Количество попаданий в кэш.
* cache_scarce
* Количество недостатков кэша.
member такой же, как и директива vhost_traffic_status_limit_traffic.
vhost_traffic_status_limit_check_duplicate
| - | - |
|---|---|
| Синтаксис | vhost_traffic_status_limit_check_duplicate \<on|off> |
| По умолчанию | on |
| Контекст | http, server, location |
Описание: Включает или отключает дедупликацию vhost_traffic_status_limit_by_set_key.
Обрабатывается только одно из дублирующихся значений (member | key + member)
в каждой директиве (http, server, location), если эта опция включена.
vhost_traffic_status_set_by_filter
| - | - |
|---|---|
| Синтаксис | vhost_traffic_status_set_by_filter $variable group/zone/name |
| По умолчанию | - |
| Контекст | http, server, location, if |
Описание: Получает указанное значение статуса, хранящееся в общей памяти.
Можно получить почти все значения статуса, и полученное значение сохраняется в $variable, который является первым аргументом.
- group
- server
- filter
- upstream@alone
- upstream@group
- cache
- zone
- server
- name
- filter
- filter_group@name
- upstream@group
- upstream_group@name
- upstream@alone
- @name
- cache
- name
- name
- requestCounter
- Общее количество клиентских запросов, полученных от клиентов.
- requestMsecCounter
- Количество накопленного времени обработки запросов в миллисекундах.
- requestMsec
- Среднее время обработки запросов в миллисекундах.
- responseMsecCounter
- Количество накопленного времени обработки ответов только upstream в миллисекундах.
- responseMsec
- Среднее время обработки ответов только upstream в миллисекундах.
- inBytes
- Общее количество байтов, полученных от клиентов.
- outBytes
- Общее количество байтов, отправленных клиентам.
- 1xx, 2xx, 3xx, 4xx, 5xx
- Количество ответов с кодами состояния 1xx, 2xx, 3xx, 4xx и 5xx.
- cacheMaxSize
- Ограничение на максимальный размер кэша, указанное в конфигурации.
- cacheUsedSize
- Текущий размер кэша.
- cacheMiss
- Количество пропусков кэша.
- cacheBypass
- Количество обходов кэша.
- cacheExpired
- Количество истекших кэшей.
- cacheStale
- Количество устаревших кэшей.
- cacheUpdating
- Количество обновляющихся кэшей.
- cacheRevalidated
- Количество переутвержденных кэшей.
- cacheHit
- Количество попаданий в кэш.
- cacheScarce
- Количество недостатков кэша.
- weight
- Текущая настройка веса сервера.
- maxFails
- Текущая настройка max_fails сервера.
- failTimeout
- Текущая настройка fail_timeout сервера.
- backup
- Текущая настройка backup сервера. (0|1)
- down
- Текущая настройка down сервера. (0|1)
Предостережения: name чувствителен к регистру. Все возвращаемые значения имеют целочисленный тип.
Например:
* requestCounter в serverZones
* vhost_traffic_status_set_by_filter $requestCounter server/example.org/requestCounter
* requestCounter в filterZones
* vhost_traffic_status_set_by_filter $requestCounter filter/country::example.org@KR/requestCounter
* requestCounter в upstreamZones
* vhost_traffic_status_set_by_filter $requestCounter upstream@group/backend@10.10.10.11:80/requestCounter
* requestCounter в upstreamZones::nogroups
* vhost_traffic_status_set_by_filter $requestCounter upstream@alone/10.10.10.11:80/requestCounter
* cacheHit в cacheZones
* vhost_traffic_status_set_by_filter $cacheHit cache/my_cache_name/cacheHit
vhost_traffic_status_average_method
| - | - |
|---|---|
| Синтаксис | vhost_traffic_status_average_method \<AMM|WMA> [period] |
| По умолчанию | AMM 60s |
| Контекст | http, server, location |
Описание: Устанавливает метод, который является формулой для расчета среднего времени обработки ответов.
period - это эффективное время значений, используемых для расчета среднего. (По умолчанию: 60s)
Если period установлено в 0, эффективное время игнорируется.
В этом случае отображается последнее среднее значение, даже если запросов не было, и после истечения времени.
Соответствующие значения - это requestMsec и responseMsec в JSON.
- AMM
- AMM - это арифметическое среднее.
- WMA
- WMA - это взвешенное скользящее среднее.
vhost_traffic_status_histogram_buckets
| - | - |
|---|---|
| Синтаксис | vhost_traffic_status_histogram_buckets second ... |
| По умолчанию | - |
| Контекст | http, server, location |
Описание: Устанавливает наблюдаемые ведра, которые будут использоваться в гистограммах.
По умолчанию, если вы не установите эту директиву, она не будет работать.
second может быть выражен в десятичных дробях с минимальным значением 0.001 (1мс).
Максимальный размер ведер составляет 32. Если этого значения недостаточно для вас,
измените NGX_HTTP_VHOST_TRAFFIC_STATUS_DEFAULT_BUCKET_LEN в src/ngx_http_vhost_traffic_status_node.h
Например:
* vhost_traffic_status_histogram_buckets 0.005 0.01 0.05 0.1 0.5 1 5 10
* Наблюдаемые ведра - [5мс 10мс 50мс 100мс 500мс 1с 5с 10с].
* vhost_traffic_status_histogram_buckets 0.005 0.01 0.05 0.1
* Наблюдаемые ведра - [5мс 10мс 50мс 100мс].
Предостережения: По умолчанию, если вы не установите эту директиву, статистика гистограммы не работает.
Восстановленные гистограммы с помощью директивы vhost_traffic_status_dump не будут затронуты изменениями ведер
с помощью директивы vhost_traffic_status_histogram_buckets.
Поэтому вам сначала нужно удалить зону или файл дампа перед изменением ведер
с помощью директивы vhost_traffic_status_histogram_buckets.
Аналогично, удалите файл дампа при первом использовании гистограммы.
vhost_traffic_status_bypass_limit
| - | - |
|---|---|
| Синтаксис | vhost_traffic_status_bypass_limit \<on|off> |
| По умолчанию | off |
| Контекст | http, server, location |
Описание: Включает или отключает обход директив vhost_traffic_status_limit.
Функции ограничения обходятся, если эта опция включена.
Это в основном полезно, если вы хотите подключить веб-страницу статуса, такую как /status, независимо от директив vhost_traffic_status_limit, как показано ниже:
http {
vhost_traffic_status_zone;
...
server {
...
location /status {
vhost_traffic_status_bypass_limit on;
vhost_traffic_status_display;
vhost_traffic_status_display_format html;
}
}
}
vhost_traffic_status_bypass_stats
| - | - |
|---|---|
| Синтаксис | vhost_traffic_status_bypass_stats \<on|off> |
| По умолчанию | off |
| Контекст | http, server, location |
Описание: Включает или отключает обход vhost_traffic_status.
Функции статистики трафика обходятся, если эта опция включена.
Другими словами, это исключается из статистики трафика.
Это в основном полезно, если вы хотите игнорировать ваш запрос на странице статуса, такой как /status, как показано ниже:
http {
vhost_traffic_status_zone;
...
server {
...
location /status {
vhost_traffic_status_bypass_stats on;
vhost_traffic_status_display;
vhost_traffic_status_display_format html;
}
}
}
vhost_traffic_status_stats_by_upstream
| - | - |
|---|---|
| Синтаксис | vhost_traffic_status_stats_by_upstream \<on|off> |
| По умолчанию | on |
| Контекст | http |
Описание: Включает или отключает статистику upstreamZone.
Статистика upstreamZone в функциях статистики трафика обходится, если эта опция отключена.
Другими словами, это исключается из статистики трафика.
Это в основном полезно, если вы хотите отключить сбор статистики для серверов upstream, чтобы уменьшить нагрузку на ЦП.
http {
vhost_traffic_status_zone;
vhost_traffic_status_stats_by_upstream off;
proxy_cache_path /var/cache/nginx keys_zone=zone1:1m max_size=1g inactive=24h;
upstream backend {
...
}
...
server {
...
location /status {
vhost_traffic_status_display;
vhost_traffic_status_display_format html;
}
location /backend {
proxy_cache zone1;
proxy_pass http://backend;
}
}
}
vhost_traffic_status_measure_status_codes
Позволяет отслеживать конкретные коды состояния HTTP или все коды состояния в модуле статуса трафика Vhost.
| - | - |
|---|---|
| Синтаксис | vhost_traffic_status_measure_status_codes [all] [status_code1] [status_code2] ... |
| По умолчанию | off |
| Контекст | http |
Параметры
status_code1, status_code2, ...: Конкретные коды состояния HTTP для отслеживания (100-599)all: Отслеживать все коды состояния HTTP
Примеры
Отслеживание конкретных кодов состояния: ```nginx vhost_