Nginx возвращает 502, пока сервер перезапускается. Как я могу заставить Nginx повторить попытку N раз с M секундной задержкой? Есть ли плагин или что-то еще?
16
Я обнаружил, что Nginx потребовалось ~ 2 секунды, чтобы исчерпать попытки, если вы указали сотни экземпляров одного и того же бэкэнда:
server localhost:8080 max_fails=0;
server localhost:8080 max_fails=0;
server localhost:8080 max_fails=0;
server localhost:8080 max_fails=0;
(.... э-э, повторите по мере необходимости!)
Да, ужасный клудж - но это добавляет степень упорства ...
Еще хуже, вы можете использовать:
server localhost:8080 max_fails=0;
server localhost:80 backup;
Предполагая, что Nginx работает на порте 80, он будет пытаться постоянно зацикливать запрос вокруг Nginx до тех пор, пока localhost: 8080 не ответит. Т.е. повторите бесконечное (?) Количество раз с нулевой задержкой.
Я вернусь к своей мягкой камере сейчас ....
Если ваша установка nginx имеет поддержку Lua, вы можете некоторое время удерживать клиента с помощью метода sleep. Операция неблокирующая и не блокирует работника. Имейте в виду, что пользователь не может удерживаться бесконечно, так как некоторые другие связанные с сетью тайм-ауты сокетов / брандмауэров могут, наконец, возникнуть.
Затем в вашем вышестоящем списке вам нужно добавить указанный выше сервер в качестве резервной копии для хранения клиента.
И это должно быть включено в спецификацию вашего прокси-сервера:
источник
lua
модуль в nginx на Ubuntu 17.04, запустите:sudo apt-get install libnginx-mod-http-lua
Ближайшая вещь, которую я знаю, это этот проект , но я никогда не использовал. Я знаю, что у лака есть проверка бэкэнда, может быть, вы захотите взглянуть на него.
источник