Can /etc/hosts be used instead of resolver when using proxy_pass?
I need to perform a proxy_pass to the same nginx
A workaround is to use Nginx map, in order to copy the /etc/hosts
content.
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;
}
}
This will map wanted_host
to wanted_host_ip
, like a resolver.
You can get around this by installing dnsmasq
and setting your resolver to 127.0.0.1
. Basically this uses your local DNS as a resolver, but it only resolves what it knows about (among those things is your /etc/hosts
) and forwards the rest to your default DNS.