Hello! On Wed, Dec 14, 2016 at 08:06:31PM +0300, Dmitry Sivachenko wrote:
> > On 14 Dec 2016, at 19:59, Maxim Dounin <[email protected]> wrote: > > > > Если в конфиге действительно proxy_pass на имя - то при чём тут > > resolver? Первыми будет использоваться IPv4-адреса из-за порядка > > сохранения записей, который случается в ngx_inet_resolve_host(). > > > > Однако как и в случае resolver'а - порядок ни на что не влияет, > > кроме, может быть, отдельных краевых эффектов, т.к. все полученные > > адреса будут использоватся и запросы между ними будут > > балансироваться по round-robin. > > Допустим, что nginx работает на ipv6-only сервере, а some.ip (аргумент > proxy_pass) -- имеет и A, и AAAA. > Я не хочу чтобы nginx вообще пытался устанавливать соединение к ipv4-адресу. Если у вас ipv6-only сервер - так и будет, т.к. nginx использует getaddrinfo() с флагом AI_ADDRCONFIG, и неподдерживаемые адреса система просто не вернёт nginx'у. > Кроме того, непонятно зачем вообще балансировать между A и AAAA адресами? Потому что при использовании конструкции proxy_pass http://some.domain.name; nginx получает все адреса для заданного имени и делает между ними балансировку по round-robin. Такое поведение в явном виде документировано, http://nginx.org/r/proxy_pass/ru: : Если доменному имени соответствует несколько адресов, то все они : будут использоваться по очереди (round-robin). Кроме того, в : качестве адреса можно указать группу серверов. Такой подход позволяет задавать группы серверов в DNS, а не явно в конфиге, и много где используется. В том числе - именно так работает обычная балансировка с помощью нескольких адресов в DNS, только клиентов много, а не один, как в случае с nginx'ом. Какие именно адреса использовать - nginx'у не важно, что есть - то и будет использовать. -- Maxim Dounin http://nginx.org/ _______________________________________________ nginx-ru mailing list [email protected] http://mailman.nginx.org/mailman/listinfo/nginx-ru
