Пустая переменная $upstream status при 499
yanda.a
nginx-forum на forum.nginx.org
Чт Дек 26 19:20:37 UTC 2019
Добрый день!
Есть upstream с несколькими серверами. На этом upstream'е бывают очень
долгие запросы (это уже другая история). Если клиент разорвал соединение, в
логах будет $status = 499, но продолжаем ждать ответа от бекенда (опция
proxy_ignore_client_abort on), и если бекенд не отвалился по таймауту, то в
переменную $upstream_status пишется код его ответа. А вот если клиент
отключился от нас и бекенд отвалился по таймауту, то переменная
$upstream_status пустая, хотя, должна быть 504 по идее.
Для сравнения, ситуация с 504 (не кусок из логов, а просто содержимое
переменных, но это взято из реальных логов, которых нет в сыром виде):
status: 504
upstream_addr: backend-01-1,backend-01-2
upstream_status: 504,504
upstream_response_time: 90,90
Ситуация с 499 и таймаутом бекенда:
status: 499
upstream_addr: backend-01-1
upstream_status: -
upstream_response_time: 90
Ситуация с 499 и без таймаута бекенда:
status: 499
upstream_addr: backend-01-2
upstream_status: 200
upstream_response_time: 0.038
Собственно, вопрос, нормальное ли подобное поведение? Или это больше
смахивает на баг? Используется версия 1.16.1.
Заранее спасибо!
Posted at Nginx Forum: https://forum.nginx.org/read.php?21,286602,286602#msg-286602
Подробная информация о списке рассылки nginx-ru