Amazon S3 - Opções para roteamento de URL nua

5

Problema

Estou usando um domínio personalizado para hospedar um index.html estático no Amazon S3. Tudo funciona bem no meu domínio: site.com . No entanto, quando visito www.site.com , recebo um erro. Pelo que entendi, preciso fazer um redirecionamento 301 do URL www para o URL nu.

Parece haver algumas maneiras de fazer isso, mas minha compreensão do DNS é limitada, e parece que muitas dessas opções são desaconselháveis.

Opções

  1. Tenha dois registros A, um com www e outro sem. Aparentemente, isso pode causar problemas de SEO porque o Google o usará como conteúdo duplicado.

  2. Tenha um único repositório de redirecionamento no qual todos são encaminhados. Isso pode causar problemas com o cloudfront. link

  3. Use um registro PTR para redirecionar - Mas aparentemente isso não é aconselhável. Como eu redireciono o www para não-www no Route53?

  4. Como meu nome é godaddy, use godaddy para redirecionar: link

  5. Use um serviço gratuito como o wwwizer link

  6. Use o redirecionamento de bucket do Amazon. Isso dá o grande problema de precisar de dois buckets para cada domínio, o que significa que só posso ter 50 domínios em vez de 100. Isso é um problema para mim. link

Eu tentei listar todas as opções que conheço. Por favor, alguém com uma melhor compreensão de domínios e DNS me ajuda a decidir qual é a rota ideal para descer, considerando desempenho, confiabilidade e SEO.

    
por Jimmy 23.09.2013 / 17:19

1 resposta

1

A opção 1 não funcionará com sites hospedados no S3, pois o que o S3 vê no cabeçalho Host: da solicitação HTTP de entrada deve corresponder exatamente ao nome do bloco e definir uma duplicata A registro não vai resolver o seu problema.

A opção 2 não funcionará pelo mesmo motivo: a solicitação nunca chegará ao bloco que contém as regras de redirecionamento, exceto para solicitações direcionadas ao nome real do intervalo. A resposta a qual você se conectou não é nada mais do que a "maneira difícil" de fazer a Opção 6 e requer um depósito por nome de host.

A opção 3 não é útil porque os registros PTR não causam redirecionamentos do navegador. Geralmente usado para DNS reverso, Um registro PTR não tem aplicativo neste contexto.

Opção 4 Go Daddy tem opções chamadas "Domain Forwarding" e "Subdomain Forwarding", mas isso significa que você precisa ter seu DNS hospedado por Go Daddy, não apenas ter seu domínio registrado lá (essas são duas coisas diferentes, mas não necessariamente, vamos juntos). Se é isso que você tem agora, é possível "encaminhar" o subdomínio "www" (www.example.com) para o ápice (example.com) que o Go Daddy realiza criando registros A ou CNAME para www.example.com que apontam para seus próprios servidores da Web, que geram redirecionamentos HTTP 301 ou 302 para o link . Se o seu DNS estiver hospedado com o Go Daddy e não no Route 53, essa provavelmente é a opção mais simples, mas se o DNS não estiver hospedado com o Go Daddy, essa opção não estará disponível. Como você está usando o ápice do seu domínio como um site da Web no S3, suponho que seu DNS esteja hospedado no Route 53, o que significa que isso não funcionará.

A opção 5 parece ser uma má ideia, introduzindo um terceiro desnecessário na equação, mas mais importante, resolve o problema errado. Eles não redirecionam www.example.com para example.com e redirecionam example.com para www.example.com.

A opção 6 é uma boa opção, com as desvantagens mencionadas, em relação ao número limitado de intervalos disponíveis para cada conta da AWS.

Se você tiver vários domínios diferentes, uma outra opção seria alocar um endereço IP elástico no EC2 (para que você tenha um endereço IP de terminal estático que não será alterado) e, em seguida, instale uma instância Micro vinculada a ele. Endereço IP e instale HAProxy nele. O HAProxy é realmente projetado para front-end de servidores web reais e tráfego de balanceamento de carga para eles a partir do mundo exterior, mas também tem a capacidade de gerar redirecionamentos. A configuração não é terrivelmente complicada, e o HAProxy é muito eficiente com CPU, então eu esperaria que você fizesse muito trabalho com um Micro, mas sempre poderia escalá-lo para uma instância maior se o tráfego fizesse isso necessário.

Você configuraria um ouvinte de front-end na porta 80:

frontend main
    bind *:80

E, para cada domínio, crie uma lista de controle de acesso (acl) para observar solicitações contendo esse nome de host no cabeçalho HTTP "Host" ...

    acl www.example.com hdr(host) -i www.example.com

... então configure um redirecionamento para gerar um 301 para o hostname desejado.

    redirect prefix http://example.com if www.example.com

No DNS, você configura www.example.com com um registro A apontando para o endereço IP público elástico dessa instância Micro.

Com essa configuração, o caminho é preservado, portanto, uma solicitação enviada para qualquer caminho, com o link ser atendido com um redirecionamento HTTP 301 para o mesmo caminho exato no outro domínio, como link .

Você pode fazer coisas parecidas com um servidor web real rodando em uma máquina, como Nginx ou Apache, mas o HAProxy é uma ferramenta muito pesada e leve que parece bastante apropriada para tal tarefa, e gerando redireciona assim, esta é uma das coisas que eu uso nas minhas operações.

    
por 30.09.2013 / 06:30