requests to www.mydomain.com/blabla... will be redirected to the same mydomain but without the www
Isso é feito criando um bucket vazio no S3 chamado www.example.com
, configurando-o para redirecionar todas as solicitações para um hostname diferente ( example.com
) e apontando o DNS para ele.
Se você quiser que ele ofereça suporte ao redirecionamento de solicitações https no lado www, crie uma segunda distribuição do CloudFront para o nome do host www, apontando para o ponto de extremidade do site para o intervalo e apontando DNS para o CloudFront.
requests to mydomain.com/anything/including/path/like/this will give the s3 (/cloudfront) index.html
Configure o intervalo example.com
(aquele com o seu conteúdo, não o vazio discutido acima) para hospedagem estática do site, e definir o nome do documento de índice para index.html
nas opções de configuração de hospedagem do site estático do intervalo. Conforme discutido na documentação do S3, quando o recurso de hospedagem de site do S3 estiver ativado para o intervalo, a página de índice nomeada do local apropriado no bucket será automaticamente retornada pelo S3 sempre que possível, de acordo com estas regras:
-
Se o caminho solicitado for
/foo/bar/
(com barra final), o S3 procurará um objeto com a chavefoo/bar/index.html
e o retornará, deixando a barra de endereço do navegador inalterada. -
Se o caminho solicitado for
/foo/bar
(sem barra) efoo/bar/index.html
existir, o S3 retornará um redirecionamento para/foo/bar/
, o que resulta no comportamento descrito acima, após a exibição do/
à direita na barra de endereços do navegador. (Este é o redirecionamento para adicionar a barra final é o comportamento padrão do servidor da Web; caso contrário, os links relativos na página de índice apontarão para o diretório errado).
Em vez de selecionar o intervalo da lista suspensa no CloudFront, você precisa digitar o nome do host do ponto de extremidade do site para o intervalo, ao configurar a origem do CloudFront. Caso contrário, os recursos do site, como documentos de índice, não serão ativados:
Important
Do not select the name of your bucket from the list, such as example.com.s3.amazonaws.com
http://docs.aws.amazon.com/gettingstarted/latest/swh/getting-started-create-cfdist.html
Próxima edição:
requests to mydomain.com/path/or/not/path/file_that_ends_with_any_extesnion_like.js will serve that file from the s3 (/cloudfront) if it's too hard I can also set up my website so all that assests will be in the assets folder so requests to mydomain.com/assets/path/blabla.bla will serve the static file from the s3 (/cloudfront)
Você pode configurar o CloudFront para escolher para qual "origem" (sistema back-end) uma solicitação será enviada, usando comportamentos de cache, cada um dos quais corresponde a um padrão de caminho. Parece que, nesse caso, você deseja que seu comportamento de cache padrão aponte para o bucket, que enviará todas as solicitações para lá, se não corresponder a outro comportamento de cache.
and last but not least requests to mydomain.com/api/... will redirect to the ec2 instance which holds my REST API node.js server
Presumivelmente, você não quer dizer "redirecionar", mas sim "encaminhar" ou "proxy" (mesma coisa) para a instância do EC2.
Declare a instância do EC2 como outra origem na distribuição do CloudFront para o seu site. Crie um novo comportamento de cache que corresponda ao padrão de caminho /api/*
que usa essa origem, e o CloudFront enviará essas solicitações à sua instância do EC2.
Certifique-se de que seu código no EC2 retorne os cabeçalhos Cache-Control:
apropriados nas respostas da API para que o CloudFront os armazene em cache por um período de tempo apropriado ou não retorne Cache-Control: no-cache
.
Observe que, nos padrões de caminho de comportamento do cache, uma barra inicial ausente é implícita, portanto, api/*
é equivalente a /api/*
.
Observe também que o CloudFront tem uma configuração chamada "caminho de origem", um atributo da origem, que às vezes é confundido com "padrão de caminho", que é um atributo dos comportamentos de cache. Deixe o "caminho de origem" em branco, porque ele não está relacionado aos caminhos que você deseja enviar para uma origem específica.