¿Cómo configurar y acceder a las versiones local y remota del mismo sitio web/dominio?

¿Cómo configurar y acceder a las versiones local y remota del mismo sitio web/dominio?

Estoy trabajando en el sitio web de un cliente que actualmente está alojado en un servidor remoto externo. Descargué una copia del sitio a mi computadora local, que ejecuta una 'pila LAMP' configurada en Arch Linux, para usarla como versión de desarrollo.

El sitio está construido con WordPress, por lo que el dominio del sitio se almacena en la base de datos y esto se utiliza cada vez que se generan enlaces en el sitio. Entonces, para evitar tener que editar la base de datos, configuré el sitio en Apache con un host virtual y configuré el nombre de dominio del servidor para que sea el mismo que el del sitio 'activo', por ejemplo, en mi archivo 'vhosts.conf'...

ServerName    live-domain-name.co.uk
ServerAlias   *.live-domain-name.co.uk


También agregué el dominio a mi archivo 'hosts' local como:

127.0.0.1    live-domain-name.co.uk


Lo que me gustaría poder hacer es acceder.ambossitios desde mi navegador, al menos de modo que si tengo Apache ejecutándose obtengo mi copia local del sitio, pero si Apacheno esejecutando, obtengo la versión "real" del sitio.


Agregué 127.0.0.1como primera entrada 'servidor de nombres' en mi /etc/resolv.confarchivo, siendo la segunda la IP de mi enrutador de Internet y también tengo uno de los servidores DNS públicos de Goolge como tercero. Sin embargo, incluso cuando Apache no se está ejecutando, $ ping ...la IP del dominio sigue siendo 127.0.0.1.


Supongo que necesito algún tipo de resolución de DNS que verifique primero mi servidor local, pero si no se encuentra el sitio (es decir, Apache no se está ejecutando), recurrirá a uno de los otros servidores DNS. -- sólo que no tengo ni idea de cómo instalar y configurar un servidor/reenviador DNS...

¿Alguien puede ayudarme por favor?

Respuesta1

Creo que el método sugerido por @piercedRichard (es decir, eliminar la entrada de /etc/hosts cuando Apache no funciona) es viable...

pero también se me ocurre una forma retorcida (usando iptables) de enrutar la dirección IP de live-domain-name.co.uk de regreso a localhost. Creo que esto será mucho más sólido, porque la resolución de DNS se almacenará en caché y, además de arreglar /etc/hosts, también tendrás que vaciar los 'cachés' de DNS en la capa del sistema operativo y en algunos navegadores (Firefox, por ejemplo). Los cambios en iptables deberían ser instantáneos...

tal vez algo como (redireccionar a local):

iptables -t nat -A OUTPUT -p tcp --dst live-ip --dport 80 -j DNAT --to-destination 127.0.0.1:80

eliminar regla (detener la redirección):

iptables -t nat -D OUTPUT -p tcp --dst live-ip --dport 80 -j DNAT --to-destination 127.0.0.1:80

En cuanto a detectar si Apache está activo o no, coloque las reglas de iptables en su archivo /etc/init.d/apache2
o escriba un script que intente conectarse a localhost:80; si está bien, cree una regla; de lo contrario, elimine regla...

Respuesta2

La mayoría de los sistemas operativos se resolverán desde su hostsarchivo antes de intentar encontrar un servidor DNS. Si elimina (o comenta) esa línea de hosts, consultará el servidor DNS y descubrirá que es una IP remota.

Es posible que también tengas que cambiar el hostname, si está configurado en el mismo, ya que hostnametambién puede usarse para resolver IP (al menos en algunos sistemas en Linux).

página de manual de hosts.conf- Ver más información sobre la orderdirectiva.

información relacionada