Configuring nginx to retry a single upstream server

Maxim Dounin mdounin на mdounin.ru
Вт Май 25 12:15:33 UTC 2021


Hello!

On Tue, May 25, 2021 at 12:15:54PM +0300, Gena Makhomed wrote:

> On 24.05.2021 6:05, Maxim Dounin wrote:
> 
> >>> Можете поставить haproxy - он как раз будет держать клиента секунд 10,
> >>> пока бекэнды перезагружаются. Браузеру придётся ждать эти 10 секунд,
> >>> но зато он не получит 5хх ошибку.
> >>
> >> Могу поставить haproxy, но haproxy - это не веб-сервер, он не умеет
> >> отдавать статику. Значит надо будет использовать одновременно и haproxy
> >> и nginx - а это будет примерно в два раза больше работы. Хотелось бы
> >> этой лишней работы избежать и обойтись одним только nginx.
> >>
> >> To: Maxim Dounin: Как я понял, сейчас nginx этого не умеет.
> >> Планируется ли в будущем добавить такую функциональность в nginx?
> > 
> > Если это зачем-то надо - то это можно сделать с помощью
> > конфигурации, error_page + delay + повторное обращение к тому же
> > бэкенду.
> 
> Каким образом можно сделать delay обработки запроса в nginx?

Есть более одного способа, из штатного - задержки умеют делать 
limit_req (но время контролируется плохо), perl и njs.  Из 
нештатного - лет десять назад я сделал простой модуль для этого, и 
с тех пор пользуюсь регулярно:

http://mdounin.ru/hg/ngx_http_delay_module/

Возможно затащим в базу.

[...]

> Есть ли шансы, что директива queue появится в open source версии nginx?

Я бы на это не рассчитывал.

-- 
Maxim Dounin
http://mdounin.ru/


Подробная информация о списке рассылки nginx-ru