Для использования nginx в качестве кэширующего прокси-сервера, существует ли способ настроить 2 вышестоящих сервера таким образом, чтобы он всегда пробовал первый, если только тот не возвращает 404, и только в этом случае он будет пробовать второй восходящий сервер?
Я знаю об опции backup
в блоке конфигурации восходящего потока, но она пытается использовать этот сервер только в том случае, если первый недоступен. Я говорю о том, доступен ли первый сервер, но только этот конкретный запрошенный файл возвращает 404.
Ага, вы можете увеличить вес
одного сервера в вышестоящей группе и поиграть с proxy_next_upstream
, чтобы включить или исключить коды, которые у вас нет хочу, чтобы переключение произошло. Таким образом, сервер с большим весом будет обслуживать большую часть запросов (большинство / меньшинство зависит от веса, но некоторые запросы все равно будут обслуживаться вторым).
Тем не менее, резервная копия
является правильным вещь для использования. Я не могу представить себе причину, по которой не использовал бы какой-то сервер, который всегда содержит все данные.
Я не уверен, почему вам нужно, чтобы тайм-аут или ответ 50X был действительным, но если вам действительно просто нужны 404-е, тогда в документации Nginx это объясняется следующим образом:
http://nginx.org/en/docs/http/ngx_http_upstream_module.html#server
max_fails = number
устанавливает количество безуспешных попыток связи с сервер, который должен произойти в течение времени, установленного fail_timeout параметр, чтобы считать сервер недоступным в течение продолжительности, также установлен параметром fail_timeout. По умолчанию количество неудачных попыток установлено на 1. Нулевое значение отключает учет попыток.
Вот кикер:
То, что считается неудачной попыткой, определяется proxy_next_upstream, fastcgi_next_upstream, uwsgi_next_upstream, директивы scgi_next_upstream и memcached_next_upstream.
http: // nginx.org / en / docs / http / ngx_http_proxy_module.html # proxy_next_upstream
Синтаксис: ошибка proxy_next_upstream | тайм-аут | invalid_header | http_500 | http_502 | http_503 | http_504 | http_403 | http_404 | выкл ...;
http_404 сервер вернул ответ с кодом 404;
Этот ответ на аналогичное сообщение может стать основой для вашей конфигурации: