Quiero configurar mi máquina de desarrollo local para que cualquier solicitud *.local
sea redirigida a localhost
. La idea es que a medida que desarrollo múltiples sitios, solo puedo agregar vhosts a Apache llamado site1.local
, site2.local
etc., y hacer que todos resuelvan localhost
, mientras que Apache sirve un sitio diferente en consecuencia.
Estoy en Windows XP.
Traté de agregar
127.0.0.1 *.local
a mi c:\windows\system32\drivers\etc\hosts
archivo, también probé:
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 ni nada difícil, ¿alguna sugerencia?
Respuestas:
El proxy DNS acrílico (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
Configuración del proxy DNS acrílico
Para configurar el Proxy DNS acrílico, instálelo desde el enlace anterior y luego vaya a:
Agregue las siguientes líneas al final del archivo:
Reinicie el servicio Acrylic DNS Proxy:
También deberá ajustar su configuración de DNS en la configuración de su interfaz de red:
Establezca "Usar la siguiente dirección del servidor DNS":
Si luego combina esta respuesta con la respuesta de jeremyasnyder (usando
VirtualDocumentRoot
), puede configurar automáticamente dominios / hosts virtuales simplemente creando un directorio.fuente
PrimaryServerAddress
configuración (no el archivo de hosts) debe cambiarse de la predeterminada8.8.8.8
a la que proporciona el host. En VirtualBox, esto es10.0.2.3
.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 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:
Esto me permite agregar una entrada como:
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
<Directory>
etiquetas en apache.conf y hacer referencia a las páginas de http: // localhost / project / .fuente
No creo que sea posible.
De todos modos, debe modificar las entradas de raíz virtual de apache cada vez que agrega 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: compruebe la siguiente respuesta y los comentarios sobre esta respuesta. Esta respuesta tiene 6 años y ya no es correcta.
fuente
ServerAlias *.mydomain.localhost
(*
siendo el código de idioma), de modo que no tenga que editar httpd.conf cada vez que agregue un nuevo idioma; pero aún necesita agregar el subdominio al archivo hosts, de ahí la relevancia de la pregunta anterior.hosts
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.
(La capacidad de especificar direcciones que no son de bucle invertido es fantástica para probar sitios en dispositivos iOS en los que no puede acceder a un archivo de hosts).
Si combina esto con alguna de las configuraciones de Apache mencionadas en otras respuestas, puede agregar VirtualHosts con configuración cero .
fuente
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 hosts, porque (como se dijo anteriormente), no es mucho trabajo extra cuando ya está editando el archivo de configuración de apache.
fuente
Editar el archivo hosts es menos complicado cuando ejecuta "ipconfig / flushdns" desde el símbolo del sistema de Windows, en lugar de reiniciar su computadora.
fuente
Puede convencer a su administrador de red para que configure un dominio para usted (diga 'evilpuppetmaster.hell') y tenga el comodín allí para que todo (* .evilpuppetmaster.hell ') se resuelva en su IP
fuente
Tenemos esto funcionando usando DNS comodín en nuestro servidor DNS local: agregue un
A
registro similar a*.local -> 127.0.0.1
Creo que la configuración de su 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 reemplazarlo
.local
con el dominio interno de su empresa (por ejemplo.int
) y luego agregar un subdominio como.localhost.int
para que quede claro para que sirvePor
*.localhost.int
lo tanto, se resolvería127.0.0.1
para todos 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 subdominiosite1.localhost.int
, por ejemplo ,site2.localhost.int
este 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/
fuente
He escrito un proxy dns simple en Python. Leerá entradas comodín en / etc / hosts. Ver aquí: http://code.google.com/p/marlon-tools/source/browse/tools/dnsproxy/dnsproxy.py
He probado en Linux y Mac OS X, pero aún no en Windows.
fuente
Puede probar AngryHosts , que proporcionó una forma de admitir comodines y expresiones regulares. En realidad, es un software de mejora y gestión de archivos de hosts.
Se pueden ver más funciones en http://angryhosts.com/features/
fuente
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. Windows tiene su propio exe.
Debe crear un archivo ini con sus entradas dns, por ejemplo
Luego debe iniciar la aplicación dns con privilegios de administrador
o en ventanas
Finalmente, necesita configurar como su único DNS su entorno de host local (red, interfaz, dns o similar o en linux /etc/resolv.conf).
Eso es
fuente
Hice esta herramienta simple para tomar el lugar de los hosts. Se admiten expresiones regulares. https://github.com/stackia/DNSAgent
Una configuración de muestra:
fuente
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 UNIX, y no puede poner referencias de nombre de host comodín en ese archivo.
Si lees la página del manual, dice:
Aunque sí dice:
eso no es cierto desde un nivel práctico.
Básicamente, el código que mira el archivo / etc / hosts no admite una entrada comodín.
La solución es crear todas las entradas de antemano, tal vez use un script para poner un par de cientos de entradas a la vez.
fuente
@petah y Acrylic DNS Proxy es la mejor respuesta, y al final hace referencia a la capacidad de hacer sitios múltiples usando un Apache que @jeremyasnyder describe un poco más abajo ...
... sin embargo, en nuestro caso estamos probando un sistema de hospedaje multiinquilino y, por lo tanto, la mayoría de los dominios que queremos probar funcionan de la misma manera
virtualhost
, mientras que un par de otros se dirigen a otro lugar.Entonces, en nuestro caso, simplemente usa comodines regex en la
ServerAlias
directiva, así ...fuente
Aquí está la configuración total para aquellos que intentan lograr el objetivo (comodines en el entorno de desarrollo, es decir, XAMPP; este ejemplo supone que todos los sitios apuntan a la misma base de código)
archivo de hosts (agregar una entrada)
archivo:% SystemRoot% \ system32 \ drivers \ etc \ hosts
Configuración de httpd.conf (habilitar vhosts)
archivo: \ XAMPP \ etc \ httpd.conf
Configuración de httpd-vhosts.conf
archivo: XAMPP \ etc \ extra \ httpd-vhosts.conf
reiniciar apache
crear archivo pac:
guarde como whatever.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 lo modifica)
fuente
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 usar 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. Los echoipdns realizan esta magia mirando la dirección IP en la segunda parte del nombre de dominio y devolviendo la misma dirección IP en la consulta DNS. Tendrá que ejecutar los echoipdns en la máquina desde la que desea acceder al sistema remoto.
echoipdns también se puede configurar como un proxy DNS independiente, por lo que con 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.
Esencialmente, esto simplifica el desarrollo de DNS basado en el dominio comodín para entornos locales y de equipo.
echoipdns funciona en Mac, Linux y Windows.
NOTA: Soy autor de echoipdns.
fuente
Configuración para el subdominio de configuración nginx con Proxy DNS acrílico
Agregue al archivo de hosts Acrylic
127.0.0.1 example.com *.example.com
y reinicie el servicio Acrylic. $ branch : su nombre de subdominio.Establecer en lugar de root / var / www / html / $ branch / public; la ruta de tu proyecto
fuente
Esto se puede hacer con Pi-Hole , solo edite "/ etc / hosts" y reinicie el servicio dns.
Ejemplo:
fuente
Puede usar 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.
fuente
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 funciona lo suficientemente bien para mí, en su archivo de hosts, simplemente agrega:
127.0.0.1 site1.local
127.0.0.1 site2.local
127.0.0.1 site3.local
...
fuente