Como configurar e acessar versões locais e remotas do mesmo site/domínio?

Como configurar e acessar versões locais e remotas do mesmo site/domínio?

Estou trabalhando no site de um cliente que está atualmente hospedado em um servidor remoto externo. Baixei uma cópia do site para o meu computador local, que está executando uma 'pilha LAMP' configurada no Arch Linux, para usar como versão de desenvolvimento.

O site é construído em WordPress, portanto o domínio do site fica armazenado no banco de dados e este é utilizado sempre que são gerados links no site. Então, para evitar a edição do banco de dados, configurei o site no Apache com um host virtual e configurei o nome de domínio do servidor para ser o mesmo do site 'ao vivo', por exemplo, no meu arquivo 'vhosts.conf' ...

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


Também adicionei o domínio ao meu arquivo 'hosts' local como:

127.0.0.1    live-domain-name.co.uk


O que eu gostaria de poder fazer é acessarambossites do meu navegador, pelo menos para que, se eu tiver o Apache em execução, eu obtenha minha cópia local do site, mas se o Apachenão éem execução, obtenho a versão 'real' do site!


Adicionei 127.0.0.1como primeira entrada 'servidor de nomes' em meu /etc/resolv.confarquivo, sendo o segundo o IP do meu roteador de Internet e também tenho um dos servidores DNS públicos do Goolge como o terceiro. No entanto, mesmo quando o Apache não está em execução, $ ping ...ainda mostra o IP do domínio como 127.0.0.1!


Suponho que preciso de algum tipo de resolvedor de DNS que verifique primeiro meu host local, mas se o site não for encontrado (ou seja, o Apache não estiver em execução), ele voltará a usar um dos outros servidores DNS! - só que não tenho ideia de como instalar e configurar um servidor/encaminhador DNS...

Alguém pode me ajudar por favor?

Responder1

Acho que o método sugerido por @piercedRichard (ou seja, excluir a entrada de /etc/hosts quando o Apache estiver inativo) é viável ...

mas também posso pensar em uma maneira distorcida (usando iptables) de rotear o endereço IP de live-domain-name.co.uk de volta para localhost. Eu acho que isso será muito mais robusto - porque a resolução DNS será armazenada em cache e, além de corrigir /etc/hosts, você também terá que liberar 'caches' de DNS na camada do sistema operacional e em alguns navegadores (firefox, por exemplo). As alterações no iptables devem ser instantâneas ...

talvez algo como (redirecionar para local):

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

excluir regra (parar redirecionamento):

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

No que diz respeito a detectar se o apache está ativo ou não - coloque as regras do iptables no seu arquivo /etc/init.d/apache2 -
ou escreva um script que tente se conectar ao localhost: 80, se estiver ok, crie a regra, caso contrário, exclua regra...

Responder2

A maioria dos sistemas operacionais resolverá seus hostsarquivos antes de tentar encontrar um servidor DNS. Se você remover (ou comentar) essa linha hosts, ele consultará o servidor DNS e descobrirá que é um IP remoto.

Você também pode ter que alterar o hostname, se estiver definido como o mesmo, pois hostnametambém pode ser usado para resolver IPs (pelo menos por alguns sistemas no Linux).

Página de manual hosts.conf- Veja mais informações sobre a orderdiretriz.

informação relacionada