Configuring nginx to retry a single upstream server

Gena Makhomed gmm на csdoc.com
Чт Май 20 21:05:45 UTC 2021


Здравствуйте, All!

Есть nginx, который проксирует запросы на единственный бекенд php-fpm.
Во время перезапуска php-fpm клиентам сразу сыпятся 5хх ошибки.

Каким образом можно настроить nginx так, чтобы он в случае ошибки
связи с бекендом пытался достучаться до него в течении N секунд
(например, 30 сек), с интервалом, например, в K секунд
(например, 0.1 сек) ?

Тогда клиент вместо сообщения про ошибку видел бы просто небольшое
замедление ответа сервера на секунду или максимум несколько секунд,
что гораздо лучше, чем мгновенный возврат сообщения про ошибку 5хх.

Может быть как-то с помощью njs или nginx-module-perl или с помощью
ngx_http_upstream_module это можно сделать? Или тут единственно 
возможный вариант - писать патч на С для решения этой задачи?

-- 
Best regards,
  Gena



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