É possível usar o CloudFront da Amazon na loja toda?

Gostaríamos de rotear alguns paths da para um blog em Wordpress (Exemplo clássico /blog) usando Path Patterns para diferentes Origins. O Default iria para a Vtex e /blog* iria para o Wordpress, por exemplo.

Colocaríamos o domínio principal da loja como Alternate Domain Names da distribuição CDN do CloudFront.

Até aí, tudo bem ao nosso ver pois teremos estabilidade, HTTP2, Cache e etc... O problema vem do fado do CloudFlare não deixar customizar o cabeçalho "Host" na requisição para a VTEX. Ficaria algo como site.com.br.vtexcommerce.com.br e assim tendo o acesso negado ou um redirecionamento.

Existe alguma forma de usar o CloudFront na loja toda? Sei lá... Setando algum cabeçalho para não ocorrer o redirecionamento ou que indique qual loja deve ser carregada ou outra solução?

@Tomir Schmite Jr.​ não entendi exatamente a sua dúvida. Mas por que não realiza a configuração normal da loja no domínio principal. E utilizando o gerenciador de DNS + as Regras no Cloudflare você realiza os apontamentos para o blog. No Cloudfront + Wordpress você pode utilizar outros subdomínios. Ex. cdn.site.com,br, cdn1.site.com.br, static.site.com.br.

Não entendi por que deseja colocar o domínio raiz para apontar para o Cloudfront. Em termos de SEO isso não influência. Utilizando um subdomínio já é o suficiente.

É que querem manter o /blog como path e não subdomínio. :-(

Na verdade nem vai ser /blog vai ser /nome-do-blog/nome-do-post... Podem ser mais de um blog.

O CloudFront atuaria como proxy reverso direcionando as requisições de acordo com o Path. Já vi funcionando em outras plataformas mas no caso da Vtex não sei como poderia configurar.

Agora entendi. Não sei como seria possível realizar na vtex e utilizando cloudfront. Usando regras no apache seria muito simples. Se você realizar o apontamento do domínio raiz para o servidor do wordpress e lá realizar os redirects com apache não funcionaria? Resolveria o seu problema? Pq ai seria basicamente como uma instalação de multisites do wordpress, a única diferença é que teria um proxy reverso para o domínio raiz que apontaria para o servidor da vtex. E neste caso você conseguiria setar o header.

Mas me surgiu algo agora. No Cloudfront você pode customizar os headers, não funcionou?

Sobre um servidor, realmente seria fácil configurar um nginx para agir como proxy reverso... Mas teria o onus de manter esse servidor... Algo que eu não queria.

Sobre os cabeçalhos do CloudFront o Host é um dos que está na lista que não são repassados a origem, ou seja o CloudFront irá preencher o Host com o hostname da origem... Que na Vtex seria algo do tipo www.loja.vtexcommerce.com.br

Screen Shot 2018-01-05 at 18.27.56

Eu achei uma pergunta semelhante nesse forum: https://community.vtex.com/s/question/0D50L00005AsLDdSAN/colocar-o-blog-em-uma-url-vtex-ex-blog?language=pt_BR

@Augusto Garrucho menciona que a solução do proxy reverso não é recomendada pela questão de disponibilidade.

Queria ver se existe a possibilidade de fazer isso com o ClouFront.

@Tomir Schmite Jr.​ @Mateus Augusto Saggin​ como o outro post comenta, não é possível ter uma URL "/blog" apontando para um servidor externo pois toda a estrutura após "/" fica dentro da VTEX.

Você tem dois caminhos para seguir:

  • Utilizar o blog em um subdomínio;
  • Transferir o conteúdo do blog para dentro da VTEX e fazer uma customização da home do blog e da página de posts;

Se optar pela segunda opção, você tem dois caminhos para cadastro de posts:

  • Utilizar o MASTER DATA para cadastrar novos posts e via API resgatar informaçòes e montar sua página;
  • Utilizar uma categoria especial(ex: Blog) e cadastrar os posts como um produto;

De qualquer forma acima, com exceção a ter um subdomínio você irá precisar de uma boa customização em cima da plataforma.

O melhor caminho seria apontar o blog para um subdomínio! Sinceramente desconheço se realmente há uma perda tão grande em questão de rankeamento.

Espero ter ajudado!

@Tomir Schmite Jr.​ caso este cenário seja muito necessário, você pode utilizar o proxy reverso sem problemas. Utilizando o Cloudfront mesmo, você pode perfeitamente realizar esta função, sem qualquer dor de cabeça ou downtime.

A única questão é que você terá que realizar a configuração no Cloudfront para que ele envie os headers corretos tanto para a Vtex quando para o Wordpress ou qualquer solução que utilize o Cloudfront para realizar o roteamento. Além dos headers você precisará configurar o encaminhamento das query strings e dos cookies. Assim não terá problemas na loja e nem no blog.

Outra solução que descobri em conversa com um amigo é que você pode utlizar um novo serviço lançado pela AWS em 2017 o Lambda@Edge (https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/lambda-at-the-edge.html) juntamente com o Cloudfront para tratar as requisições.

Com um boa pesquisada na internet é possível encontrar essas soluções. Acredito que seria apenas necessário um auxílio da Vtex para a configuração correta dos headers.

Muito obrigado @Mateus Augusto Saggin​ ! É justamente o que eu quero e preciso. Usar o CloudFront como proxy reverso. Acontece que o CloudFront vai repassar o cabeçalho Host como site.com.br.vtexcommerce.com.br e a VTEX vai retornar com um redirect para o domínio principal da loja. Existe alguma forma de ele não fazer esse redirect?

Ou se tivesse algum cabeçalho alternativo que sobreponha o Host... Algo como X-Host.

@Tomir Schmite Jr.​ realmente nessa questão em especial não sei te ajudar. Acredito que teria que o pessoal da Vtex dar um auxílio, por que vai depender muito de como está configurado o servidor que recebe estas requisições.

Muito obrigado @Mateus Augusto Saggin​ ! Consegui fazer aqui. Estava faltando colocar o cabeçalho Host na Whitelist, permitir os outros métodos HTTP e configurar o CloudFront para encaminhar tudo.

@Tomir Schmite Jr.​ coisa linda. Que bom que deu certo. 👊

@Tomir Schmite Jr.​ gostaria de saber como foi sua experiência com a solução. Achou que valeu a pena em termos de custo e performance?

@Will Soares​

Não teve ganho pq não ativamos nenhum cache nos PATHs que não eram do Wordpress (VTEX) e não afetou em nada a performance da VTEX. Por baixo dos panos a VTEX tbm usa o CloudFront...

Legal! Só de saber que não se arrependeu depois de 1 ano já é ótimo! Obrigado