Comodines en un archivo de hosts de Windows

Quiero configurar mi máquina de desarrollo local para que cualquier solicitud de *.local se redirija a localhost . La idea es que a medida que desarrolle múltiples sitios, simplemente pueda agregar vhosts a Apache llamados site1.local , site2.local , etc., y hacer que todos resuelvan a localhost , mientras que Apache sirve un sitio diferente en consecuencia.

Estoy en Windows XP.

Intenté agregar

 127.0.0.1 *.local 

a mi archivo c:\windows\system32\drivers\etc\hosts , también intenté:

 127.0.0.1 .local 

Ninguno de los cuales parece funcionar.

Sé que puedo configurarlos en diferentes números de puerto, pero eso es un problema ya que es difícil recordar qué puerto es cuál.

No quiero tener que configurar un servidor DNS local o algo difícil, ¿alguna sugerencia?

Acrylic DNS Proxy (gratuito, de código abierto) hace el trabajo. Crea un servidor DNS proxy (en su propia computadora) con su propio archivo de hosts. El archivo de hosts acepta comodines.

Descargar desde el sitio web oficial

http://mayakron.altervista.org/support/browse.php?path=Acrylic&name=Home

Configurando el Proxy de Acrylic DNS

Para configurar Acrylic DNS Proxy, instálelo desde el enlace de arriba y luego vaya a:

  1. comienzo
  2. Progtwigs
  3. Proxy DNS acrílico
  4. Config
  5. Editar el archivo de host personalizado (AcrylicHosts.txt)

Agregue las siguientes líneas al final del archivo:

 127.0.0.1 *.localhost 127.0.0.1 *.local 127.0.0.1 *.lc 

Reinicie el servicio Proxy DNS de Acrylic:

  1. comienzo
  2. Progtwigs
  3. Acrónimo DNS Proxy
  4. Config
  5. Reiniciar servicio de acrílico

También deberá ajustar su configuración de DNS en la configuración de su interfaz de red:

  1. comienzo
  2. Panel de control
  3. Redes e Internet
  4. Conexiones de red
  5. Propiedades de conexión de área local
  6. TCP / IPv4

Establezca “Usar la siguiente dirección de servidor DNS”:

 Preferred DNS Server: 127.0.0.1 

Si luego combina esta respuesta con la respuesta de jeremyasnyder (utilizando VirtualDocumentRoot ), puede configurar automáticamente dominios / hosts virtuales simplemente creando un directorio.

Para responder a su pregunta, no puede usar comodines en el archivo de hosts en Windows.

Sin embargo, si solo quiere cambiar el archivo de hosts para que funcionen nuevos sitios … puede configurar su Apache de esta manera y no tiene que seguir editando su configuración:

http://postpostmodern.com/instructional/a-smarter-mamp/

Básicamente, un resumen rápido basado en mi configuración, agregue lo siguiente a su archivo apache.conf:

  LoadModule vhost_alias_module modules/mod_vhost_alias.so NameVirtualHost *:80  Options Indexes FollowSymLinks Includes ExecCGI AllowOverride All Order allow,deny Allow from all   VirtualDocumentRoot c:/xampp/sites/%-1/%-2+/  

Esto me permite agregar una entrada como:

 127.0.0.1 test.dev 

y luego crea el directorio, c: \ xampp \ sites \ dev \ test y coloca los archivos necesarios allí y simplemente funciona.

La otra opción es usar tags de en apache.conf y hacer referencia a las páginas de http: // localhost / project / .

No creo que sea posible.

De todos modos, debe modificar las entradas virtuales de apache cada vez que agregue un sitio y una ubicación nuevos, por lo que no es un gran trabajo sincronizar el nuevo nombre con el archivo vhost de Windows.

Actualización: verifique la siguiente respuesta y los comentarios sobre esta respuesta. Esta respuesta tiene 6 años y ya no es correcta.

Encontré una publicación sobre el uso del archivo de hosts de Windows que también dice “No se permiten comodines”.

En el pasado, acabo de agregar las entradas adicionales al archivo de hosts, porque (como se dijo anteriormente), no es mucho trabajo adicional cuando ya está editando el archivo de configuración de Apache.

La edición del archivo hosts es menos molesta cuando ejecuta “ipconfig / flushdns” desde el símbolo del sistema de Windows, en lugar de reiniciar su computadora.

Para agregar a las excelentes sugerencias que ya están aquí, XIP.IO es un fantástico servidor DNS comodín que está disponible públicamente.

  myproject.127.0.0.1.xip.io -- resolves to --> 127.0.0.1 other.project.127.0.0.1.xip.io -- resolves to --> 127.0.0.1 other.machine.10.0.0.1.xip.io -- resolves to --> 10.0.0.1 

(La capacidad de especificar direcciones que no son de bucle invertido es fantástica para probar sitios en dispositivos con iOS donde no se puede acceder a un archivo de hosts).

Si combina esto con parte de la configuración de Apache mencionada en otras respuestas, puede potencialmente agregar VirtualHosts con configuración cero .

Puede pedirle a su administrador de red que configure un dominio para usted (digamos ‘evilpuppetmaster.hell’) y tener el comodín allí para que todo (* .evilpuppetmaster.hell ‘) resuelva su IP

Trabajamos con DNS comodín en nuestro servidor DNS local: agregue un registro A como *.local -> 127.0.0.1

Creo que sus configuraciones de red necesitarán tener el sufijo de dominio elegido en la lista de búsqueda de sufijos de dominio para máquinas en la red, por lo que es posible que desee reemplazar .local con el dominio interno de su compañía (por ejemplo, .int ) y luego agregar un subdominio como .localhost.int para aclarar para qué .localhost.int .

Entonces *.localhost.int se resolvería en 127.0.0.1 para todo el mundo en la red, y la configuración del archivo de configuración para todos los desarrolladores “simplemente funcionaría” si los puntos finales cuelgan de ese subdominio, por ejemplo, site2.localhost.int , site2.localhost.int Esto es más o menos el esquema que hemos introducido.

dnsmasq también se ve bien, pero aún no lo he probado: http://ihaveabackup.net/2012/06/28/using-wildcards-in-the-hosts-file/

He escrito un proxy dns simple en Python. Leerá las entradas de comodines en / etc / hosts. Vea aquí: http://code.google.com/p/marlon-tools/source/browse/tools/dnsproxy/dnsproxy.py

He probado en Linux y Mac OS X, pero todavía no en Windows.

Puede probar AngryHosts , que proporcionó una forma de admitir comodines y expresiones regulares. En realidad, es un software de administración y mejora de archivos de hosts.
Se pueden ver más características en http://angryhosts.com/features/

Estoy usando DNSChef para hacer eso.

https://thesprawl.org/projects/dnschef/

Tienes que descargar la aplicación, en Linux o Mac necesitas que python lo ejecute. Windows tiene su propio exe.

Debe crear un archivo ini con sus entradas dns, por ejemplo

 [A] *.google.com=192.0.2.1 *.local=127.0.0.1 *.devServer1.com=192.0.2.3 

Luego debe iniciar la aplicación dns con privilegios de administrador

 sudo python dnschef.py --file myfile.ini -q 

o en ventanas

 runas dnschef.exe --file myfile.ini -q 

Finalmente, debe configurar como su único DNS su entorno de host local (red, interfaz, dns o similar o en linux /etc/resolv.conf).

Eso es

Hice esta herramienta simple para tomar el lugar de los hosts. Las expresiones regulares son compatibles. https://github.com/stackia/DNSAgent

Una configuración de muestra:

 [ { "Pattern": "^.*$", "NameServer": "8.8.8.8" }, { "Pattern": "^(.*\\.googlevideo\\.com)|((.*\\.)?(youtube|ytimg)\\.com)$", "Address": "203.66.168.119" }, { "Pattern": "^.*\\.cn$", "NameServer": "114.114.114.114" }, { "Pattern": "baidu.com$", "Address": "127.0.0.1" } ] 

No pude encontrar una prohibición por escrito, pero por convención, el archivo de hosts de Windows sigue de cerca el archivo de hosts de UNIX, y no puede poner referencias de nombres de host de comodines en ese archivo.

Si lees la página man, dice:

 DESCRIPTION The hosts file contains information regarding the known hosts on the net- work. For each host a single line should be present with the following information: Internet address Official host name Aliases 

Aunque dice,

  Host names may contain any printable character other than a field delim- iter, newline, or comment character. 

eso no es cierto desde un nivel práctico.

Básicamente, el código que mira el archivo / etc / hosts no admite una entrada de comodín.

La solución alternativa es crear todas las entradas por adelantado, tal vez usar una secuencia de comandos para colocar un par de cientos de entradas a la vez.

@petah y Acrylic DNS Proxy es la mejor respuesta, y al final se refiere a la capacidad de hacer multi-sitio usando un Apache que @jeremyasnyder describe un poco más abajo …

… sin embargo, en nuestro caso estamos probando un sistema de alojamiento multi-tenant y por lo tanto la mayoría de los dominios que queremos probar van al mismo virtualhost , mientras que un par de otros se dirigen a otro lugar.

Entonces, en nuestro caso, simplemente usa los comodines de regex en la directiva ServerAlias , así que …

 ServerAlias *.foo.local 

Aquí está la configuración total para aquellos que intentan lograr el objective (comodines en entorno de desarrollo, es decir, XAMPP; este ejemplo supone que todos los sitios apuntan a la misma base de código)

archivo hosts (agregar una entrada)

archivo:% SystemRoot% \ system32 \ drivers \ etc \ hosts

 127.0.0.1 example.local 

Configuración httpd.conf (enable vhosts)

archivo: \ XAMPP \ etc \ httpd.conf

 # Virtual hosts Include etc\extra\httpd-vhosts.conf 

Configuración de httpd-vhosts.conf

archivo: XAMPP \ etc \ extra \ httpd-vhosts.conf

  ServerAdmin admin@example.local DocumentRoot "\path_to_XAMPP\htdocs" ServerName example.local ServerAlias *.example.local # SetEnv APP_ENVIRONMENT development # ErrorLog "logs\example.local-error_log" # CustomLog "logs\example.local-access_log" common  

reiniciar apache

crear archivo pac:

guárdelo como whatever.pac donde desee y luego cargue el archivo en la red del navegador> proxy> configuración de autoconfiguración (vuelva a cargar si modifica esto)

 function FindProxyForURL(url, host) { if (shExpMatch(host, "*example.local")) { return "PROXY example.local"; } return "DIRECT"; } 

Puede usar echoipdns para esto ( https://github.com/zapty/echoipdns ).

Al ejecutar echoipdns local todas las solicitudes de subdominios .local se redireccionan a 127.0.0.1, por lo que cualquier dominio con xyz.local, etc. se resolverá en 127.0.0.1. Puede usar cualquier otro sufijo también simplemente reemplace local con el nombre que desee.

Echoipdns es aún más poderoso, cuando desea usar su url desde otras máquinas en la red, puede usarlo con cero configuración.

Por ejemplo, si la dirección IP de su máquina es 192.168.1.100, ahora podría usar un nombre de dominio xyz.192-168-1-100.local que siempre se resolverá en 192.168.1.100. Esta magia la realizan los ecoipdns al observar la dirección IP en la segunda parte del nombre de dominio y devolver la misma dirección IP en la consulta DNS. Tendrá que ejecutar los ecoipdns en la máquina desde la que desea acceder al sistema remoto.

echoipdns también se puede configurar como un proxy DNS independiente, de modo que con solo señalar este DNS, ahora puede usar todos los beneficios anteriores sin ejecutar un comando especial cada vez, e incluso puede usarlo desde dispositivos móviles.

En esencia, esto simplifica el desarrollo de DNS basado en el dominio comodín para el entorno local y de equipo.

echoipdns funciona en Mac, Linux y Windows.

NOTA: Soy autor de echoipdns.

Puede usar un cliente DNS dynamic como http://www.no-ip.com . Luego, con un servidor DNS externo CNAME * .midominio.com a mydomain.no-ip.com.

Si bien no puede agregar un comodín como ese, puede agregar la lista completa de los sitios que necesita, al menos para las pruebas, que funciona lo suficientemente bien para mí, en su archivo de hosts, solo agrega:

127.0.0.1 site1.local
127.0.0.1 site2.local
127.0.0.1 site3.local

Tener apache escuchar en muchos puertos también es una alternativa.