Подтвердить что ты не робот

При использовании proxy_pass можно использовать /etc/hosts для разрешения имен доменов вместо "resolver"?

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

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

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

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

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

4b9b3361

Ответ 1

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

Ответ 2

Обходной путь заключается в использовании карты 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, как распознаватель.