proxy_pass不使用/ etc / hosts解析DNS

时间:2015-05-01 02:38:15

标签: nginx lua dns hosts hosts-file

在nginx中,proxy_pass指令未使用/etc/hosts文件解析DNS。任何方式来实现这种可能性(可能通过利用Lua作为最后的手段)?

3 个答案:

答案 0 :(得分:4)

简而言之,您需要在本地安装dnsmasq并使用127.0.0.1作为解析器。

请参阅此相关问题和答案:

When using proxy_pass, can /etc/hosts be used to resolve domain names instead of "resolver"?

答案 1 :(得分:2)

Nginx在启动时查找IP一次,如果静态设置则不再检查。要解决此问题,您可以尝试将其设置为变量:

resolver 127.0.0.1;
set $url "domain.com";
proxy_pass http://$url;

答案 2 :(得分:0)

如果您的服务器上安装了systemd,则可以使用系统附带的名称服务器,系统名称为systemd-resolved,以从/etc/hosts文件中解析主机名。

只需将其添加到您的nginx配置httpserverlocation块中即可:

resolver 127.0.0.53;

使用systemctl status systemd-resolved.service查看它是否在您的服务器上运行。