Re: Как отменить запрос?
Maxim Dounin
mdounin на mdounin.ru
Вт Фев 19 17:30:16 UTC 2019
Hello!
On Tue, Feb 19, 2019 at 10:15:17AM -0500, darksmoke wrote:
> Добрый день
> Помогите, пожалуйста, разобраться как это работает.
> Есть фронт который шлет запрос на бэк (Клиент - nginx - бэк).
> Клиент послал запрос, nginx его спроксировал на бэк. На бэки запрос курится
> что то делает очень долго. Клиент уже не хочет ждать и уходит. Как разорвать
> это соединение на бэке?
> Т.е. Клиент устоновил соединение с nginx, а nginx с бэком. Клиент разорвал
> соединение с nginx, а nginx продолжает ждать запрос от бэка, а вот как раз
> хочу что бы не продолжал. Что бы разорвал соединение.
По умолчанию nginx разрывает соединение с бэкендом, если клиент
закрывает соединение. И пишет при этом в лог на уровне info:
... client prematurely closed connection, so upstream connection is closed too ...
Не разрывать может либо если вы об этом явно попросили в
конфигурации (http:///nginx.org/r/proxy_ignore_client_abort), либо
если включено кэширование/сохранение ответов (так как в этом
случае ответ будет полезен даже если клиент закрыл соединение).
Соответственно если ваша проблема в том, что nginx не закрывает
соединение - для решения достаточно убрать настройки, которые не
позволяют nginx'у это делать.
Куда чаще, к сожалению, встречается ситуация, когда nginx
соединение закрывает, а вот бэкенд никак не умеет это
детектировать и обрабатывать. Но тут от nginx'а уже ничего не
зависит.
--
Maxim Dounin
http://mdounin.ru/
Подробная информация о списке рассылки nginx-ru