使用proxy_pass时,可以使用/ etc/hosts来解析域名而不是"解析器"吗?

Ian*_*kem 30 reverse-proxy nginx url-rewriting

可以在/ etc/hosts文件被用来代替解析器使用时proxy_pass

我需要对同一个nginx机器执行proxy_pass.有没有办法使用机器的/ etc/hosts文件解析域,而不是通过"解析器"属性指定DNS服务器?

这将节省我到达同一服务器所需的额外跃点.我已经尝试在/ etc/hosts文件中设置映射到DNS的内部IP,但是nginx仍然从解析器属性中设置的DNS服务器读取.或者有没有办法让HTTPProxy模块考虑/ etc/hosts文件设置?

感谢您分享的任何建议..

这是我在nginx论坛上发布的同一个问题:http: //forum.nginx.org/read.php?11,218997

小智 40

您可以通过安装dnsmasq和设置解析器来解决这个问题127.0.0.1.基本上,这会将您的本地DNS用作解析器,但它只会解析它所知道的内容(其中包括您的内容/etc/hosts),并将其余内容转发给您的默认DNS.

  • 但遗憾的是,`dnsmasq`不会自动检测`hosts`文件中的更改.你必须发送`HUP`. (5认同)

Tho*_*aux 5

解决方法是使用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;

    }
}
Run Code Online (Sandbox Code Playgroud)

这将映射wanted_hostwanted_host_ip解析器.