it-swarm-es.com

En mi archivo / etc / hosts / en Linux / OSX, ¿cómo hago un subdominio comodín?

Necesito probar subdominios en mi localhost. ¿Cómo puedo tener efectivamente este resultado de agregar *.localhost.com para mi /etc/hosts/ ¿archivo?

Si no es posible, ¿cómo puedo solucionar este problema? Necesito probar subdominios comodín en mi servidor local. Es un servidor dev Django, ¿puede el servidor dev Django) manejar los subdominios? ¿Puede algún otro software/enrutamiento darme el resultado final que quiero? ?

181
MikeN

He escrito un proxy dns en Python. Leerá entradas comodín en/etc/hosts. Ver aquí: https://github.com/hubdotcom/marlon-tools/blob/master/tools/dnsproxy/dnsproxy.py

45
marlonyao

Instalar dnsmasq (De todos modos, hago esto en todos mis escritorios Linux como caché DNS). En dnsmasq.conf agregue la línea:

address=/localhost.com/127.0.0.1
160
tomchuk

No es posible especificar comodines en /etc/hosts archivo. Especifique los nombres de host requeridos explícitamente o configure alternativamente un servidor de nombres local con las reglas apropiadas.

65
ar.

Debe configurar un servidor DNS y hacer que cada cliente lo use para la resolución. El servidor en sí puede ser algo tan "ligero" como dnsmasq o tan pesado como BIND .

15
Gerald Combs

Flujo de trabajo simple (no es necesario instalar nada)

Personalmente, me gusta crear un archivo PAC para eso y hacer que mi navegador solo lo use.

Paso 1: crea un archivo, por ejemplo: *.proxy.pac* en alguna parte (uso mi $home carpeta)

Paso 2: pegue este código (el ejemplo es con el puerto 8000):

function FindProxyForURL(url, Host) {
  if (shExpMatch(Host, "*localhost")) {
    return "PROXY localhost:8000";
  }
  return "DIRECT";
}

Paso 3 : Haz que tu navegador use este archivo PAC.

Video de Youtube para PAC y Firefox

Paso 4 : Ahora puedes probar tu aplicación accediendo a: http://mysubdomain.localhost/

Paso 5: Disfruta :)

11
Bijan

He arreglado un viejo proyecto mío:

https://github.com/airtonix/avahi-aliases

requisitos:

  • linux donde avahi y python-avahi son instalables
  • estás de acuerdo con los dominios .local (avahi no admite ningún otro tipo)

Ventajas sobre el uso de dnsmasq o el proxy python dns:

  • otros usuarios de avahi/bonjour en su red local pueden resolver los alias que cree y anunciar a la red (siempre que permita el acceso al puerto 5353)
5
airtonix

No puede usar un comodín en /etc/hosts.

Eche un vistazo aquí para un buen tutorial sobre cómo lograr en OS X usando BIND, el servidor DNS incorporado pero inactivo, y Apache.

4
Trevor

Esta solución basada en DNS funcionó perfectamente en mi caso, sin necesidad de instalar nada: https://Gist.github.com/fedir/04e60d679d5657d1f9f9aa10b3168282 (Mac OSX 10.9)

4
Fedir RYKHTIK

Si desea utilizar dnsmasq con NetworkManager puede (o incluso debe) iniciar dnsmasq desde NetworkManager agregando

dns=dnsmasq

a /etc/NetworkManager/NetworkManager.conf. Entonces la configuración de dnsmasq va a /etc/NetworkManager/dnsmasq.conf o /etc/NetworkManager/dnsmasq.d/ resp.

3
TNT

Una tarea común para este tema es asignar directorios a subdominios. Una forma muy sencilla de hacerlo es agregar automáticamente las entradas basadas en el directorio al archivo de hosts:

#!/usr/bin/python 
 
 import os 
 
 hostsFile = open ("/ etc/hosts", "a +"); 
 
 líneas = hostsFile.readlines () 
 
 para fileName en os.listdir ('/ opt/subdomainDirs'): 
 
 entryExists = Falso 
 Para línea en líneas: 
 Si fileName en línea: 
 EntryExists = True 
 
 Si no entryExists: 
 HostsFile. escribir ("127.0.0.1" + fileName + ".localhost\n"); 
2
Lukas Glowania

dnsmasq funcionó para mí, excepto que tuve que hacer algunos pasos adicionales.

Aquí está el procedimiento completo:

  1. Anteponer /etc/resolv.conf con la siguiente línea

    nameserver 127.0.0.1
    
  2. Agregue las siguientes líneas a /etc/dnsmasq.conf

    listen-address=127.0.0.1
    address=/localhost.localdomain/127.0.0.1
    address=/localhost/127.0.0.1
    
  3. Reiniciar dnsmasq

2
jbangerter

Respuesta corta:

Su archivo/etc/hosts/no le permitirá usar comodines o números de puerto. Deberá crear una entrada para cada uno de sus subdominios

2
Marcos Placona

La respuesta corta es que no. La respuesta más larga es que necesita ser más claro sobre lo que desea lograr realmente, porque quizás haya una mejor manera y una forma diferente de lograrlo.

Para el alojamiento web (nunca he visto que se use de otra manera) se realiza en DNS en combinación con un servidor web virtual compatible con el alojamiento. Para obtener más información sobre registros DNS comodín (Wikipedia), y un artículo Alojamiento comodín con Apache y Bind para Linux usando bind y Apache.

En el peor de los casos, podría usar un servidor DNS local, supongo.

2
mctylr

Gracias tschundeee por lo que considero que es la respuesta definitiva a este problema, ojalá pudiera comentar, pero aquí está la configuración total para aquellos que intentan lograr el objetivo original (comodines que apuntan a la misma base de código: no instalar nada, entorno de desarrollo, es decir , XAMPP)

archivo de hosts (agregar una entrada)

archivo:/etc/hosts (no Windows)

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 de 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 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)

function FindProxyForURL(url, Host) {
  if (shExpMatch(Host, "*example.local")) {
    return "PROXY example.local";
  }
  return "DIRECT";
}
2
Daniel Jordi