При использовании proxy_pass, можно ли использовать / etc / hosts для разрешения доменных имен вместо «resolver»? - PullRequest
28 голосов
/ 29 ноября 2011

Можно ли / etc / hosts использовать вместо resolver при использовании proxy_pass ?

Мне нужно выполнить proxy_pass для того жемашина nginx.Есть ли способ разрешить домены, используя файл компьютера / etc / hosts вместо указания DNS-сервера через свойство resolver?

Это избавит меня от дополнительных прыжков, необходимых для достижения того же сервера.Я попытался настроить внутренний IP-адрес, сопоставленный с DNS в файле / etc / hosts, но nginx все еще читает с DNS-сервера, установленного в свойстве resolver .Или есть способ заставить модуль HTTPProxy учитывать параметры файла / etc / hosts?

Спасибо за любой совет, которым вы могли бы поделиться.

Это тот же вопрос, который я разместил вФорум nginx: http://forum.nginx.org/read.php?11,218997

Ответы [ 2 ]

40 голосов
/ 19 декабря 2011

Вы можете обойти это, установив dnsmasq и установив для вашего резольвера значение 127.0.0.1. В основном это использует ваш локальный DNS в качестве распознавателя, но он разрешает только то, о чем он знает (среди них ваш /etc/hosts), и перенаправляет остальное в ваш DNS по умолчанию.

5 голосов
/ 19 июля 2017

Обходной путь - использовать карту Nginx, чтобы скопировать содержимое /etc/hosts.

map $wanted_host $wanted_host_ip
{
    default 127.0.0.1;
    b.dev.local X.X.X.X;
    a.dev.local X.X.X.X;
}

server
{
    listen              80;
    server_name         ~^(?P<wanted_port>[0-9]+?)-(?P<wanted_host>.+?)\.HOSTNAME$;

    location /
    {
        proxy_pass http://$wanted_host_ip:$wanted_port;

    }
}

Это отобразит wanted_host в wanted_host_ip, как преобразователь.

...