url rewriting - mod_rewrite - Al usar proxy_pass, ¿se puede/etc/hosts para resolver nombres de dominio en lugar de "resolver"?
proxy_pass location (2)
¿Pueden usarse / etc / hosts en lugar de resolver cuando se usa proxy_pass ?
Necesito realizar un proxy_pass a la misma máquina nginx. ¿Hay alguna manera de resolver los dominios utilizando el archivo / etc / hosts de la máquina en lugar de especificar un servidor DNS a través de la propiedad "resolver"?
Esto me ahorrará los saltos adicionales necesarios para llegar al mismo servidor. Intenté configurar la IP interna asignada al DNS en el archivo / etc / hosts, pero nginx sigue leyendo desde el servidor DNS configurado en la propiedad del resolvedor . ¿O hay una manera de hacer que el módulo HTTPProxy considere la configuración del archivo / etc / hosts?
Gracias por cualquier consejo que puedas compartir ...
Esta es la misma pregunta que publiqué en el foro de nginx: http://forum.nginx.org/read.php?11,218997
Una solución consiste en utilizar el mapa de Nginx para copiar el contenido de /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;
}
}
Esto correlacionará wanted_host
con wanted_host_ip
, como un resolver.
Puede evitar esto instalando dnsmasq
y estableciendo su resolver en 127.0.0.1
. Básicamente, esto utiliza su DNS local como un resolvedor, pero solo resuelve lo que sabe (entre esas cosas está su /etc/hosts
) y reenvía el resto a su DNS predeterminado.