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


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

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


151
2018-03-02 16:43


origen


¿Pertenece al superusuario? - Paul R
Sé que la gente dice que no es posible! ¡Pero cómo lo hago de todos modos! ¿Qué es algo fuera de / etc / hosts / puedo usar para obtener el efecto? Estoy probando un servidor de desarrollo. - MikeN
en superusuario unix.stackexchange.com/questions/3352/… - Ciro Santilli 新疆改造中心 六四事件 法轮功
Como la mayoría de las respuestas se centran en su primera pregunta (comodines de subdominio de host local), responderé a su pregunta secundaria como un comentario: sí, el servidor dev de Django es perfectamente capaz de manejar subdominios de host local, solo tiene que convencer a su navegador y su sistema operativo para enviar el tráfico a su manera (usando una de las varias soluciones a continuación)! - hheimbuerger


Respuestas:


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


40
2018-05-02 09:30



¡Esto es perfecto! He estado buscando una solución simple como esta durante mucho tiempo (trabajando en OSX Mavericks BTW) - Billy Moon
Ahora, si tan solo pudiéramos pip install eso :) - metakermit
Instalé esto, hice todo y lo ejecuté, pero no bloquea los sitios. - DisplayName
No puedo votar esto suficiente. He necesitado esto para siempre, tropecé con esta joya de preguntas y respuestas, y soy un poco pirata informático de Python, y esto es un tidbit limpio. ¡Gracias por compartir! - Farley


Instalar dnsmasq (Hago esto en todos mis escritorios Linux como un caché de DNS de todos modos). En dnsmasq.conf añadir la línea:

address=/localhost.com/127.0.0.1

144
2018-03-03 02:37



¡Brillante! Nota para usuarios de Mac, realmente es así de simple: 1. sudo port install dnsmasq 2. editar /opt/local/etc/dnsmasq.conf 3. sudo port load dnsmasq - tomc
OSX con brew: igual que el anterior pero brew instala dnsmasq - Matt Humphrey
fyi brew> port (re sugerencia de @MattHumphrey) - electblake
Este ejemplo no funciona para mí, posiblemente porque estoy usando vagrantup.com para servir localmente. No te preocupes, ya he cambiado la IP a la correcta. 192.168.50.11 pero el DNS no se está resolviendo. ¿Alguna idea, este ejemplo es correcto para "no 127.0.0.1" IP? - Brian
Gran consejo Para un escritorio de Ubuntu 14.04 (que ejecuta dnsmasq de forma predeterminada), cree un archivo llamado /etc/NetworkManager/dnsmasq.d/dnsmasq-localhost.conf y poner la línea address=/localhost.com/127.0.0.1 en ella, luego reinicie. - user38397


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


53
2018-03-02 16:46





Necesita configurar un servidor DNS y tener cada uno cliente Úsalo para la resolución. El servidor en sí puede ser algo tan "ligero" como dnsmasq o tan pesado como ENLAZAR.


14
2018-03-02 20:28



+1 para dnsmasq, que está muy bien documentado y es fácil de usar - David Schmitt
dnsmasq no es capaz de hacer esto. - DisplayName
¿Qué parte del comportamiento descrito en el --address= ¿La sección de la página de manual de dnsmasq.conf no cubre el caso de uso descrito anteriormente? - Gerald Combs


Flujo de trabajo simple (sin necesidad de instalar nada)

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

Paso 1: crear un archivo, por ejemplo: *.proxy.pac* en algún lugar (yo uso mi $home carpeta)

Paso 2: pega 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: Haga que su navegador use este archivo PAC.

Video de Youtube para PAC y Firefox 

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

Paso 5: Disfrutar :)


8
2018-03-02 16:47



Quizás vale la pena mencionar que esto solo afectará a su navegador. Otros programas (como wget, no se verá afectado por esto). Eso no es un problema en sí mismo, pero tal vez es mejor mencionar esto. - Willem Van Onsem


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

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


3
2018-04-16 09:11



Apache no tiene nada que ver con subdominios. - Anonymous


He ordenado un viejo proyecto mío:

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

requisitos:

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

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

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

3
2018-03-06 22:02





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)


3
2018-03-02 16:49



Una solución tan increíble para Mac OSX. - iDev247
Enlace muerto, por favor actualice su enlace, su solución, o de alguna manera desapruebe esta respuesta. Aclamaciones. - Relic
Hecho (copia de seguridad añadida) - Fedir RYKHTIK