使用proxy_pass时,可以使用/ etc / hosts来代替parsing器吗?
我需要对同一个nginx机器执行proxy_pass。 有没有办法解决使用机器的/ etc / hosts文件域而不是通过“parsing器”属性指定一个DNS服务器?
这将节省我到达相同的服务器所需的额外的啤酒花。 我已经尝试设置映射到/ etc / hosts文件中的DNS的内部IP,但nginx仍然从parsing器属性中设置的DNS服务器读取。 或者有没有办法让HTTPProxy模块考虑/ etc / hosts文件设置?
感谢您的任何build议,你可以分享..
这是我在nginx论坛发布的同一个问题: http : //forum.nginx.org/read.php?11,218997
您可以通过安装dnsmasq
并将您的解析器设置为127.0.0.1
来解决此问题。 基本上这使用你的本地DNS作为解析器,但它只解决它所知道的(其中的东西是你的/etc/hosts
),并将其余的转发给你的默认DNS。
解决方法是使用Nginx映射,以复制/etc/hosts
内容。
map $wanted_host $wanted_host_ip { default 127.0.0.1; b.dev.local XXXX; a.dev.local XXXX; } 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
,就像解析器一样。