Atualmente, tenho um nome de domínio registrado para um servidor Linux / Apache que vou substituir por outro em um novo endereço IP.
A migração dos dados será relativamente rápida e uma interrupção de 5 minutos durante esse processo é aceitável.
O registro DNS tem um TTL de 6 a 12 horas, aparentemente, o que não posso acelerar.
Quais são as conseqüências prováveis dessa mudança? Presumivelmente, os usuários que ainda estiverem visualizando o endereço antigo continuarão atingindo o servidor antigo, enquanto os usuários cujo cache de DNS expirou ou está vazio verão o novo domínio.
É possível fazer algum tipo de redirecionamento do servidor antigo (com Apache ou iptables) para o novo IP? O servidor antigo pode continuar em execução pelo tempo necessário.
Respostas:
Você pode usar um proxy reverso no servidor da web antigo. Pode ser um pouco de trabalho para configurar, mas enquanto o ITS DNS estiver atualizado, você estará bem.
O que vai acontecer é:
Se você estiver executando o Apache, consulte mod_proxy. Se você estiver executando o IIS, consulte ISAPI Rewrite para obter esse tipo de funcionalidade.
(observe que o DNS no servidor Web antigo precisa estar atualizado se você deseja fazer proxy usando o nome de domínio. Caso contrário, faça o proxy diretamente para o endereço IP e verifique se o host está escutando o IP sem um nome de host)
fonte
/etc/hosts
123.456.789.12 my.domain.com
Isso permitirá que o servidor da web antigo saiba o endereço atualizado. Quando um cliente acessa o servidor da web antigo (porque não possui DNS atualizado), o servidor da web pode fazer proxy da solicitação usando o nome de domínio. Eu não usar o Apache, mas aqui está um exemplo Nginx: gist.github.com/scragg0x/738f144b33d17ef763d1Minha empresa fez isso com vários sites grandes. O procedimento básico que seguimos foi:
Para o Apache, você provavelmente deve usar mod_rewrite para o redirecionamento, a fim de preservar os URIs solicitados pelo cliente. Uma implementação simples seria:
Isso fará um redirecionamento 302 temporário para www.domain.com/anything para www-new.domain.com/anything. Você deseja que seja temporário, porque provavelmente deseja que os mecanismos de pesquisa indexem apenas www.domain.com, não www-new.domain.com.
Depois que a alteração do DNS para www.domain.com for propagada para sua satisfação, você poderá despejar o www-new por completo ou facilitar com facilidade quem o usar de volta ao www com outro redirecionamento. É quase o mesmo processo acima; configure o servidor antigo para lidar com www-new, altere o DNS para www-new para apontar para o servidor antigo e configure um redirecionamento no servidor antigo enviando o tráfego www-new para www:
Dessa vez, você deseja fazer um redirecionamento 301 permanente, novamente para descobrir nos rastreadores dos mecanismos de pesquisa que www.domain.com é o site que você deseja que eles indexem.
fonte
Ok, com base no que o @Farseeker recomendou, eu configurei a seguinte configuração no antigo servidor Apache para encaminhar solicitações para o novo servidor:
Para garantir que o servidor antigo tenha o endereço correto, insira uma entrada em
/etc/hosts
:Eu também tive que habilitar o Apache
mod_proxy
e osmod_proxy_http
módulos e recarregar a configuração:fonte
É um tópico antigo, mas talvez ajude alguém:
Além das respostas de Mark Henderson (mod_proxy) OU James Sneeringer (redirecionamento 302.301 para novos subdomínios), mais uma coisa poderia ser adicionada em relação à sincronização de banco de dados ao mover aplicativos grandes.
Se o seu projeto da web usa um banco de dados (por exemplo, MySQL), antes de mudar o DNS, verifique se os aplicativos (por exemplo, PHP) dos dois servidores estão se conectando ao mesmo banco de dados. Para que as leituras e gravações estejam no mesmo local e você não precise lidar com diferentes ferramentas de sincronização de banco de dados posteriormente.
Isso (provavelmente) afetaria o tempo de carregamento em um servidor, mas, durante o período da troca, isso pode ser aceito.
Caso o servidor de banco de dados não seja acessível de fora, você também pode configurar o mysql_proxy no servidor da web que tem acesso a ele e é acessível a partir de IPs externos.
fonte
Eu uso o iptables para isso quando preciso fazer isso; um pouco rápido de DNAT / SNAT e todo o seu tráfego reaparecem magicamente onde deveriam estar. Se você realmente precisa manter os endereços IP de origem, um proxy reverso pode ajudar, definindo cabeçalhos apropriados, mas isso exige muito esforço nas duas extremidades para garantir que tudo corresponda, portanto, normalmente não me preocupo com isso. para algo como uma migração transitória, e a redução de TTLs lida com a maior parte.
fonte