Nginx в качестве прокси-сервера для кеширования: Попытка второй восходящий поток, если первый возвращает 404

Для использования nginx в качестве кэширующего прокси-сервера, существует ли способ настроить 2 вышестоящих сервера таким образом, чтобы он всегда пробовал первый, если только тот не возвращает 404, и только в этом случае он будет пробовать второй восходящий сервер?

Я знаю об опции backup в блоке конфигурации восходящего потока, но она пытается использовать этот сервер только в том случае, если первый недоступен. Я говорю о том, доступен ли первый сервер, но только этот конкретный запрошенный файл возвращает 404.

3
задан 10 November 2015 в 20:18
2 ответа

Ага, вы можете увеличить вес одного сервера в вышестоящей группе и поиграть с proxy_next_upstream , чтобы включить или исключить коды, которые у вас нет хочу, чтобы переключение произошло. Таким образом, сервер с большим весом будет обслуживать большую часть запросов (большинство / меньшинство зависит от веса, но некоторые запросы все равно будут обслуживаться вторым).

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

0
ответ дан 3 December 2019 в 07:26

Я не уверен, почему вам нужно, чтобы тайм-аут или ответ 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;

Этот ответ на аналогичное сообщение может стать основой для вашей конфигурации:

https://stackoverflow.com/a/12878310/4995465

1
ответ дан 3 December 2019 в 07:26

Теги

Похожие вопросы