Mogą / etc / hosts być używane zamiast resolver podczas używania proxy_pass?
Muszę wykonać proxy_pass na tym samym komputerze nginx. Czy istnieje sposób na rozwiązanie domen przy użyciu pliku / etc / hosts komputera zamiast podawania serwera DNS za pośrednictwem właściwości "resolver"?
Pozwoli to zaoszczędzić mi dodatkowych potrzebnych skokówdotrzeć do tego samego serwera. Próbowałem ustawić wewnętrzne IP zmapowane do DNS w pliku / etc / hosts, ale nginx nadal czyta z serwera DNS w resolver własność. Czy istnieje sposób, aby moduł HTTPProxy rozważył ustawienia pliku / etc / hosts?
Dziękuję za wszelkie rady, którymi mógłbyś się podzielić.
To jest to samo pytanie, które napisałem na forum nginx: http://forum.nginx.org/read.php?11,218997
Odpowiedzi:
39 dla odpowiedzi nr 1Możesz obejść to, instalując dnsmasq
i ustawianie twojego resolwera na 127.0.0.1
. Zasadniczo to używa twojego lokalnego DNS jako resolwera, ale rozwiązuje tylko to, o czym wie (między tymi rzeczami jest twój /etc/hosts
) i przekazuje resztę do domyślnego DNS.
4 dla odpowiedzi nr 2
Obejściem jest użycie mapy Nginx, aby skopiować /etc/hosts
zawartość.
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;
}
}
Spowoduje to odwzorowanie wanted_host
do wanted_host_ip
, jak rozwiązujący.