hat - hosts windows 7
Comodines en un archivo de hosts de Windows (19)
@petah y Acrylic DNS Proxy es la mejor respuesta, y al final hace referencia a la capacidad de realizar múltiples sitios utilizando un Apache que @jeremyasnyder describe un poco más abajo ...
... sin embargo, en nuestro caso, estamos probando un sistema de hospedaje de múltiples inquilinos 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 otros lugares.
Entonces, en nuestro caso, simplemente usa comodines de ServerAlias
regulares en la directiva ServerAlias
, como así ...
ServerAlias *.foo.local
Quiero configurar mi máquina de desarrollo local para que cualquier solicitud de *.local
sea ​​redirigida a localhost
. La idea es que a medida que desarrollo varios sitios, solo puedo agregar vhosts a Apache llamados site1.local
, site2.local
, etc., y hacer que todos se resuelvan en 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 una molestia 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?
Acrílico DNS Proxy (libre, código abierto) hace el trabajo. Crea un servidor proxy DNS (en su propia computadora) con su propio archivo de hosts. El archivo hosts acepta comodines.
Descargar desde el sitio web oficial
http://mayakron.altervista.org/support/browse.php?path=Acrylic&name=Home
Configuración de proxy DNS acrílico
Para configurar el proxy DNS de acrílico, instálelo desde el enlace anterior y luego vaya a:
- comienzo
- Los programas
- Acrílico DNS Proxy
- Config
- Editar archivo de hosts personalizados (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 de proxy de acrílico DNS:
- comienzo
- Los programas
- Acrílico DNS Proxy
- Config
- Servicio de reinicio de acrílico
También deberá ajustar la configuración de DNS en la configuración de la interfaz de red:
- comienzo
- Panel de control
- Redes e Internet
- Conexiones de red
- Propiedades de conexión de área local
- 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 (usando VirtualDocumentRoot
), puede configurar automáticamente dominios / hosts virtuales simplemente creando un directorio.
Aquí está la configuración total para aquellos que intentan lograr el objetivo (comodines en el entorno de desarrollo, por ejemplo, XAMPP; este ejemplo asume 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 de httpd.conf (habilitar vhosts)
archivo: / XAMPP / etc / httpd.conf
# Virtual hosts
Include etc/extra/httpd-vhosts.conf
Configuración httpd-vhosts.conf
archivo: XAMPP / etc / extra / httpd-vhosts.conf
<VirtualHost *:80>
ServerAdmin [email protected]
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
</VirtualHost>
reiniciar apache
crear archivo pac:
guarde como quiera.pac donde quiera y luego cargue el archivo en la red del navegador> proxy> configuración de configuración automática (vuelva a cargar si modifica esto)
function FindProxyForURL(url, host) {
if (shExpMatch(host, "*example.local")) {
return "PROXY example.local";
}
return "DIRECT";
}
Editar el archivo de hosts es menos molesto cuando ejecuta "ipconfig / flushdns" desde el símbolo del sistema de Windows, en lugar de reiniciar su computadora.
Encontré una publicación sobre el uso del archivo de Windows Hosts que también dice "No se permiten comodines".
En el pasado, acabo de agregar las entradas adicionales al archivo hosts, porque (como se dijo anteriormente), no es mucho trabajo extra cuando ya está editando el archivo de configuración de apache.
Estoy usando DNSChef para hacer eso.
https://thesprawl.org/projects/dnschef/
Tienes que descargar la aplicación, en Linux o Mac necesitas Python para ejecutarla. Las ventanas tienen 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 debes 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, necesita configurar como único DNS su entorno de host local (red, interfaz, dns o similar o en linux /etc/resolv.conf).
Eso es
Hacer que apache escuche en muchos puertos también es una alternativa.
He escrito un proxy dns simple en Python. Leerá las entradas de comodín en / etc / hosts. Consulte 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.
Hice esta sencilla herramienta para tomar el lugar de los anfitriones. 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 creo que sea posible.
De todos modos, tiene que modificar las entradas de apache virtualroot cada vez que agregue un nuevo sitio y ubicación, por lo que no es un gran trabajo sincronizar el nuevo nombre con el archivo vhost de Windows.
Actualización: por favor marque la siguiente respuesta y los comentarios sobre esta respuesta. Esta respuesta tiene 6 años y ya no es correcta.
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 colocar referencias de nombre de host comodín en ese archivo.
Si lees la página del manual, 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 diga,
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 es crear todas las entradas de antemano, tal vez usar un script para colocar un par de cientos de entradas a la vez.
Para agregar a las excelentes sugerencias que ya se encuentran 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 sean de bucle invertido es fantástica para probar sitios en dispositivos iOS en los que 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 agregar VirtualHosts con cero configuraciones .
Para responder a su pregunta, no puede usar comodines en el archivo de hosts en Windows.
Sin embargo, si solo desea cambiar el archivo de hosts para hacer que los nuevos sitios funcionen ... 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
<Directory "/xampp/sites">
Options Indexes FollowSymLinks Includes ExecCGI
AllowOverride All
Order allow,deny
Allow from all
</Directory>
<VirtualHost *:80>
VirtualDocumentRoot c:/xampp/sites/%-1/%-2+/
</VirtualHost>
Esto me permite agregar una entrada como:
127.0.0.1 test.dev
y luego haga el directorio, c: / xampp / sites / dev / test y coloque los archivos necesarios allí y simplemente funciona.
La otra opción es usar etiquetas <Directory>
en apache.conf y consultar las páginas de http://localhost/project/ .
Podría convencer al administrador de la red para que configure un dominio para usted (diga ''evilpuppetmaster.hell'') y tenga el comodín allí para que todo (* .evilpuppetmaster.hell '') se resuelva a su IP
Puede probar AngryHosts , que proporciona una forma de admitir comodines y expresiones regulares. En realidad, es un software de gestión y mejora de archivos hosts.
Más características se pueden ver en http://angryhosts.com/features/
Puede usar echoipdns para esto ( https://github.com/zapty/echoipdns ).
Al ejecutar echoipdns local
todas las solicitudes de subdominios .local se redirigen a 127.0.0.1, por lo que cualquier dominio con xyz.local, etc. se resolverá a 127.0.0.1. Puede usar cualquier otro sufijo, simplemente reemplace local con el nombre que desee.
Echoipdns es aún más poderoso, cuando desea utilizar su url de otras máquinas en la red, aún puede usarlo con configuración cero.
Por ejemplo, si la dirección IP de su máquina es 192.168.1.100 ahora puede usar un nombre de dominio xyz.192-168-1-100.local que siempre se resolverá en 192.168.1.100. Esta magia es realizada por los echoipdns mirando la dirección ip en la segunda parte del nombre de dominio y devolviendo la misma dirección ip en la consulta de DNS. Tendrá que ejecutar los echoipdns en la máquina desde la que desea acceder al sistema remoto.
echoipdns también puede configurarse como un proxy DNS independiente, por lo que al solo apuntar a este DNS, ahora puede usar todos los beneficios anteriores sin ejecutar un comando especial cada vez, e incluso puede usarlo desde dispositivos móviles.
Básicamente, esto simplifica el desarrollo de DNS basado en dominio comodín para el entorno local y de equipo.
echoipdns funciona en Mac, Linux y Windows.
NOTA: Soy autor de echoipdns.
Puede utilizar un cliente DNS dinámico como http://www.no-ip.com . Luego, con un servidor DNS externo CNAME * .mydomain.com a mydomain.no-ip.com.
Si bien no puede agregar un comodín como ese, puede agregar la lista completa de sitios que necesita, al menos para las pruebas, que me funcione bien, en su archivo de hosts, simplemente agregue:
127.0.0.1 site1.local
127.0.0.1 site2.local
127.0.0.1 site3.local
...
Tenemos este trabajo utilizando DNS comodín en nuestro servidor DNS local: agregue un registro A
algo como *.local -> 127.0.0.1
Creo que su configuración de red necesitará 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 empresa (por ejemplo, .int
) y luego agregar un subdominio como .localhost.int
para que quede claro para qué .localhost.int
.
Así que *.localhost.int
se resolvería a 127.0.0.1
para todos en la red, y la configuración del archivo de configuración para todos los desarrolladores "solo funcionará" si los puntos finales se site1.localhost.int
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/