Отменяются ли запросы клиентом, переданные через nginx в fastcgi - PullRequest
0 голосов
/ 02 октября 2018

Я использую NGINX в качестве обратного прокси в сочетании с ngx_http_fastcgi_module.Он передает запросы в пользовательский Golang FastCGI, который выполняет процесс PHP-CGI.

Существуют запросы, которые занимают слишком много времени из-за сложного кода, который используют наши клиенты.Если пользователь нажимает другую ссылку в ожидании запроса, браузер отменяет предыдущий запрос, и NGINX видит его:

[info] 24#24: *1516 client 1.2.3.4 closed keepalive connection

, и это здорово!Но мой основной процесс PHP-CGI продолжает работать до истечения времени ожидания.Это может потреблять много ресурсов, если пользователь продолжает нажимать больше ссылок.Я подозреваю, что моя проблема может заключаться в том, что NGINX явно не отменяет вышестоящий запрос.Я нашел параметр fastcgi_ignore_client_abort , и кажется, что по умолчанию не игнорируется (что хорошо).В нем говорится:

Определяет, должно ли быть закрыто соединение с прокси-сервером, когда клиент закрывает соединение, не ожидая ответа.

Означает ли это, что оно действительно завершаетсяа также запрос в восходящем направлении или просто игнорирование запроса / ответа в восходящем направлении?

И если должен отправлять сигнал в восходящем направлении, есть ли способ в NGINX, чтобы я мог убедиться, что он работаеткак и ожидалось?

На стороне Fast-CGI сервер Golang ожидает Done() от http.Request.Context() во время выполнения запроса.Если NGINX явно завершает запрос восходящего потока, мы думаем, что он должен его обнаружить.Кто-нибудь знает, если это неправильно?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...