Hello! On Tue, Jun 04, 2019 at 10:40:23AM -0400, kron wrote:
> > В случае если адрес сервера в proxy_pass с переменными определяется > > с помощью resolver'а, то на каждый запрос создаётся новый апстрим. > > Это может быть не так e.g. в случае алиасинга с неявным апстримом; > > я бы проверил это в первую очередь. > > Да, в моем случае в переменной DNS адрес, который резолвится с помощью > резолвера и адрес точно резолвится в несколько адресов. > Таким образом получается, что при каждом запросе создается новый upstream с > адресом в который разрезолвилась переменная и пока этот адрес есть в > резолвере, каждый новый запрос будет фейлить? Не совсем так. Если у вас один из N возвращаемых из DNS бэкендов нерабочий - то при исползовании переменных с вероятностью 1/N nginx попытается сначала отправить запрос именно на него, и получит ошибку. После чего пойдёт на другой бэкенд в соответствии с proxy_next_upstream. > Кажется крутым решением было бы брать набор адресов из резолвера и из них > уже делать апстрим с дефолтным фоллбэком. Хотя вероятно делать это на каждый > запрос было бы ресурсоемко. Если хочется, чтобы полученный набор серверов использовался не только для одного запроса - это можно сделать, описав блок upstream и/или написав в конфиге proxy_pass без переменных. Так, собственно, nginx работает по умолчанию. Если же хочется, чтобы полученный набор адресов периодечески обновлялся - то такая фича есть в платной версии, подробности тут: http://nginx.org/ru/docs/http/ngx_http_upstream_module.html#resolve -- Maxim Dounin http://mdounin.ru/ _______________________________________________ nginx-ru mailing list nginx-ru@nginx.org http://mailman.nginx.org/mailman/listinfo/nginx-ru