try_files proxy_pass mod_rewrite url-rewriting nginx reverse-proxy

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.