1 votos

Simulación "subdominios" sin un dominio real (en una red privada)

Estoy configurando un servidor (Ubuntu Server 18.04) ejecución de Apache2 para mis propias necesidades de desarrollo y pruebas. Sólo puedo acceder a él a través de su dirección IP local (ex. http://10.0.0.125) o su nombre en la red local (ex. http://jeeves), pero está bien por ahora.

Quería crear varios subdominios en este servidor para mantener a sitios no relacionados adecuadamente aislado, pero no creo que yo pueda utilizar reales de subdominios: http://sub.10.0.0.125 no trabajo desde una IP no es un dominio, por lo tanto no puede tener un subdominio, y http://sub.jeeves no funciona desde el navegador interpreta .jeeves como un TLD y no como el nombre del servidor.

Así que se me ocurrió otra solución:

<VirtualHost *:80>
    ServerName localhost
    DocumentRoot /var/www/html
    AliasMatch "^/~(.*)" "/var/www/$1"
</VirtualHost>

Ahora puedo crear un directorio /var/www/sub y el acceso a ella a través de la http://jeeves/~sub/.

Un compromiso muy bueno, pensé ... salvo, ya que no es un subdominio, y no funciona como uno, un enlace como <a href="superuser.com/foo/"> se refieren a http://jeeves/foo/ y no como se desea a http://jeeves/~sub/foo/. Yo podría tratar de que en cada sitio del código, pero que estaría lejos de ser ideal.

Mi pregunta: hay alguna forma de hacer que Apache el tratamiento de la /~sub/ parte de la URL como un subdominio para todos los intentos y propósitos (enlaces en particular)? Algún tipo de BaseDir directiva, tal vez? No pude encontrar uno, pero eso no quiere decir algo así como que no existe.

Antes de sugerir es: Conseguir un dominio real de este servidor es un poco más allá del alcance de mis necesidades actuales; ejecución de un dedicado servidor DNS parece demasiado mayor complejidad; y la modificación del archivo hosts en cada sistema no es exactamente escalable (también no trivial en un iPhone, por ejemplo).

Me siento como mi solución sería ideal para mis necesidades, si sólo se puede trabajar.

1voto

Nick Dixon Puntos 154

un enlace como <a href="http://superuser.com/foo/"> se refieren a http://jeeves/foo/ y no como se desea a http://jeeves/~sub/foo/. [...] Hay alguna forma de hacer que Apache el tratamiento de la /~sub/ parte de la dirección URL, como un subdominio para todos los intentos y propósitos (enlaces en particular)? Algún tipo de BaseDir directiva, tal vez?

Pero no es Apache, que se preocupa por la diferencia aquí. Direcciones Url relativas, tales como /foo/ son resueltos por el navegador web, y el navegador web no se puede configurar la configuración de Apache. Mientras la URL proporcionada es un camino que se inicia con /, el navegador web siempre va a tratar como en relación con el dominio de la base.

ejecutando un servidor DNS dedicado parece demasiado mayor complejidad

Probablemente usted está confiando en un servidor DNS dedicado ahora a fin de resolver el jeeves nombre – y es probable que se ejecuta dentro de su router de la casa, y el nombre completo es, probablemente, jevees.lan. o jeeves.home. o algo así. (Los dispositivos de los clientes a aprender el sufijo a través de DHCP.)

Si tienes suerte, el router permitirá que usted agregue los nombres de host estático personalizado, tales como sub.lan., y si usted es muy afortunado, puede incluso permitir que usted agregue los dominios de tercer nivel como sub.jeeves.lan.

Si el router del servidor DNS interno no es lo suficientemente flexible, o si el nombre local de la resolución no está basado en DNS, entonces usted es la mayoría de suerte. Ejecutar su propio DNS.


Algunas personas han establecido los nombres de dominio alojado en la 'magia' de los servidores de DNS, lo que se traduce <anything>.x.y.z.t.<somedomain> a la dirección IP x.y.z.t. (Yo no sé lo específico de nombres de dominio que existen en la actualidad, pero xip.io solía ser una cosa.)

Un problema potencial con esta solución, así como con la compra de tu propio dominio – es que la mayoría de los routers domésticos simplemente bloque de respuestas de DNS que vienen de fuera, sino de resolver de una "interna" de la dirección IP. (Esto se llama "DNS de reconsolidación de protección.")

0voto

Data-Base Puntos 1743

Usted tendrá que ejecutar un dedicado servidor DNS que puede traducir su nombre de dominio solicitado de nuevo a su prueba/dev cuadro dirección IP.

He intentado esto antes con resultados mixtos mediante el uso de un local instalado solución DNS en mi dev cuadro, y fue un poco de un dolor.

He comprado un negocio de grado router que tiene NAT reflexión y la capacidad para actuar como un servidor de DNS, lo que me permitió entrar en mi dev nombres de dominio y punto a mi dev cuadro de IP. luego he configurado Apache virtualhosts como uno normalmente haría y puedo usar ambas TLD y sub.TLD nombres de dominio.

Como grawity ha dicho, ejecutar su propio DNS. Es un salvavidas para un desarrollador web.

EnMiMaquinaFunciona.com

EnMiMaquinaFunciona es una comunidad de administradores de sistemas en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros sysadmin, hacer tus propias preguntas o resolver las de los demás.

Powered by: