Re: Пустая переменная $upstream status при 499
Maxim Dounin
mdounin на mdounin.ru
Пт Дек 27 14:12:24 UTC 2019
Hello!
On Thu, Dec 26, 2019 at 02:20:37PM -0500, yanda.a wrote:
> Есть 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.
При "proxy_ignore_client_abort on;" статуса 499 быть вообще не
должно.
Что показывает "nginx -V" и что в конфиге?
--
Maxim Dounin
http://mdounin.ru/
Подробная информация о списке рассылки nginx-ru