Move arquivos estáticos de EC2 para S3 (ou cloudfront) sem atualizar links

3

Neste momento, tenho um site totalmente em uma instância do EC2, incluindo todos os arquivos estáticos, como css, js e imagens. Eu estou querendo saber sobre a melhor maneira de lidar com eles. Por exemplo, no meu <HEAD> em uma determinada página html, tenho essa referência a um arquivo .js:

<script src="js/somefile.js"></script>

O que eu quero evitar é ter que entrar e atualizar isso (e um monte de outras pessoas) para algo como:

<script src="https://SOMETHING.cloudfront.net/js/somefile.js"></script>

Não estou preocupado em mover os arquivos para o S3 (ainda), mas mais sobre como reescrever esses links. Eu estou pensando que tem que haver alguma maneira de contornar isso.

Para completar, atualmente estou usando um balanceador de carga na frente da instância do EC3 (que também é onde eu tenho o meu SSL). Eu também estou usando o Route 53 para DNS.

Qualquer ideia ajudaria.

    
por jonmrich 23.01.2015 / 02:27

2 respostas

1

Você perde muito do benefício de mover os arquivos estáticos para o S3 se não quiser alterar os links, pois isso significa que você ainda precisará executar um tipo de proxy reverso para rotear os pedidos corretamente para o S3 ou o seu Instância do EC2, dependendo se é um arquivo estático ou não.

Dito isto, existem muitas receitas para ligar, por ex. nginx como um proxy reverso, por exemplo link . Você poderia, então, colocar o nginx em cada uma das suas instâncias EC2 com balanceamento de carga e no servidor S3 ou nos serviços locais, dependendo se o conteúdo é estático ou não.

    
por 01.02.2015 / 14:51
0

Vários módulos de reescrita para o Apache, nginx e até o IIS podem fazer isso em tempo real, assim como a maioria dos CMS. Mas isso adiciona muita sobrecarga a cada solicitação.

Para fazer a substituição automaticamente e com segurança, você realmente precisa de um analisador de HTML para qualquer linguagem de script. Regex para este caso seria difícil de fazer perfeitamente com segurança a menos que você sempre use exatamente o mesmo espaçamento e ordem de argumentos em tags e referências CSS. E você também tem certeza de que não tem HTML nas tags incorporadas <code> ou <pre> ou <script> . Ainda mais desafiador seria URLs que fazem parte de strings no código JS.

Se os arquivos não são realmente HTML, mas PHP ou qualquer outra coisa, você precisará de um analisador completo para que a linguagem seja segura. Ou use uma pesquisa de regex e substitua com confirmação manual.

Uma opção final seria um CDN de proxy completo com origem personalizada. Cloudflare vem à mente. A Cloudfront também pode fazer isso, mas o SSL personalizado é muito caro com o cloudfront.

    
por 23.01.2015 / 03:05