nginx: какой порт получил запрос?

В целях тестирования я использую nginx для прослушивания нескольких портов при отправке распределенных http-запросов. Я вижу, что запрос получен nginx, но мне нужно знать, какой из его портов действительно его получил. Я не вижу в журналах никаких опций, чтобы пометить это.

Я предполагаю, что уродливой альтернативой является установка нескольких экземпляров, чтобы их журналы были разделены, но должен быть лучший способ, чем этот...?


person annaken    schedule 18.05.2011    source источник


Ответы (1)


Все, к чему вы можете получить доступ как к переменной в конфигурации nginx, вы можете регистрировать, включая нестандартные заголовки http и т. д.

Вы хотите добавить переменную $server_port.

log_format  mycustomformat  '$host $remote_addr - $remote_user [$time_local] "$request" '
                  '$status $body_bytes_sent "$http_referer" '
                  '"$http_user_agent" $server_port';
access_log /var/log/nginx/access.log mycustomformat;
person Frank Farmer    schedule 18.05.2011
comment
Быстро и в точку! Большое спасибо. - person annaken; 19.05.2011
comment
однако при использовании докера есть ловушка... $server_port - это настроенный порт, который может не быть фактическим портом, если вы запускаете свой контейнер докера, например, с -p 8000:80. - person Yevgeniy; 17.07.2020
comment
Я использую $upstream_addr в своей среде докеров, чтобы получить адрес и порт. - person Krist Jin; 23.07.2021