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