Pregunta

Quiero configurar mi máquina de desarrollo local para que cualquier solicitud de *.local son redirigidos a localhost.La idea es que a medida que desarrollo varios sitios, puedo agregar vhosts a Apache llamados site1.local, site2.local etc, y hacer que todos resuelvan localhost, mientras que Apache sirve a un sitio diferente en consecuencia.

Estoy en Windows XP.

Intenté agregar

127.0.0.1       *.local

para 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 complicado ya que es difícil recordar qué puerto es cuál.

No quiero tener que configurar un servidor DNS local ni nada complicado, ¿alguna sugerencia?

¿Fue útil?

Solución

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 & amp; 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:

  1. Inicio
  2. Programas
  3. Proxy DNS acrílico
  4. Config
  5. 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 Acrylic DNS Proxy:

  1. Inicio
  2. Programas
  3. Proxy DNS acrílico
  4. Config
  5. Reiniciar el servicio de acrílico

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

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

Establecer " Use la siguiente dirección del servidor DNS " ;:

Preferred DNS Server: 127.0.0.1

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

Otros consejos

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:

 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 hacer referencia a las páginas de http: // localhost / project / .

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.

Para agregar a las excelentes sugerencias que ya están aquí, XIP.IO es un fantástico DNS comodín servidor 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 iOS en los que no puede acceder a un archivo de hosts).

Si combina esto con algunas de las configuraciones de Apache mencionadas en otras respuestas, puede agregar VirtualHosts con configuración cero .

Encontré una publicación sobre Uso del archivo de hosts de Windows que también dice quot; 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 adicional cuando ya está editando el archivo de configuración de apache.

Editar el archivo hosts es menos problemático cuando ejecuta " ipconfig / flushdns " desde el símbolo del sistema de Windows, en lugar de reiniciar su computadora.

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

Tenemos esto funcionando usando DNS comodín en nuestro servidor DNS local: agregue un A registro algo así como *.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 reemplazar .local con el dominio interno de su empresa (por ejemplo, .int) y luego agregue un subdominio como .localhost.int para dejar en claro para qué sirve.

Entonces *.localhost.int se resolvería en 127.0.0.1 para todos en la red, y la configuración del archivo de configuración para todos los desarrolladores & "; simplemente trabajaría &"; si los puntos finales cuelgan de ese subdominio, por ejemplo site1.localhost.int, 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 /

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 & amp; Mac OS X, pero aún no en Windows.

Puede probar AngryHosts , que proporcionó una forma de admitir comodines y expresiones regulares. En realidad, es un software de gestión y mejora de archivos de hosts.
Se pueden ver más funciones 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 Python para ejecutarla. 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 windows

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 todo

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:

[
    {
        "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 al archivo de hosts UNIX, y no puede poner referencias de nombre de host comodín en ese archivo.

Si lee la página de 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 sí 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 comodín.

La solución alternativa es crear todas las entradas de antemano, tal vez use un script para poner un par de cientos de entradas a la vez.

@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 alojamiento multiinquilino y, por lo tanto, la mayoría de los dominios que queremos probar van al mismo virtualhost, mientras que otros dos están dirigidos en otro lugar.

Entonces, en nuestro caso, simplemente usa comodines regex en la directiva ServerAlias, así ...

ServerAlias *.foo.local

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

127.0.0.1   example.local

configuración httpd.conf (habilitar 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

<VirtualHost *:80>
    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
</VirtualHost>

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 auto_configuración (recargue 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 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 usarla con configuración cero.

Por ej. 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.

Entonces, 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.

Configuración para el subdominio automático de configuración de nginx con Acrylic DNS Proxy

Archivo auto.conf para su carpeta de sitios nginx

server {
    listen 80;
    server_name ~^(?<branch>.*)\.example\.com;
    root /var/www/html/$branch/public;  

    index index.html index.htm index.php;

    charset utf-8;

    location / {
        try_files $uri $uri/ /index.php$is_args$args;
    }

    location = /favicon.ico { access_log off; log_not_found off; }
    location = /robots.txt  { access_log off; log_not_found off; }

    error_log  /var/log/nginx/$branch.error.log error;

    sendfile off;

    client_max_body_size 100m;

    location ~ \.php$ {
       try_files $uri /index.php =404;
       fastcgi_pass php-fpm:9000;
       fastcgi_index index.php;
       fastcgi_buffers 16 16k;
       fastcgi_buffer_size 32k;
       fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
       include fastcgi_params;
    }

    location ~ /\.ht {
        deny all;
    }
}

Agregar al archivo de hosts de Acrylic 127.0.0.1 example.com *.example.com y reinicie el servicio Acrylic.$sucursal - su nombre de subdominio.

Establecer en lugar de raíz /var/www/html/$branch/public; la ruta de tu proyecto

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.

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 funcionan 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
...

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top