在nginx中,proxy_pass
指令未使用/etc/hosts
文件解析DNS。任何方式来实现这种可能性(可能通过利用Lua作为最后的手段)?
答案 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配置http
,server
或location
块中即可:
resolver 127.0.0.53;
使用systemctl status systemd-resolved.service
查看它是否在您的服务器上运行。