Hospedar website estático com Storin e NGINX
Visão geral
O Storin permite armazenar e distribuir arquivos estáticos de forma altamente disponível e escalável.
Embora o Storin não possua um recurso nativo de website hosting, é possível implementar essa funcionalidade utilizando um proxy reverso com NGINX.
Essa abordagem permite publicar aplicações frontend, como React, Vue ou Angular, diretamente a partir de um bucket, utilizando um domínio personalizado.
Exemplo de endpoint S3:
https://sp1-s3.saveincloud.io
Exemplo de domínio publicado:
https://seudominio.com
O endpoint S3 pode variar de acordo com a região onde o bucket foi criado. Neste exemplo, utilizamos a região SP1.
Sempre valide o endpoint correspondente ao seu ambiente antes de publicar em produção. Alterações de endpoint podem impactar o funcionamento do domínio personalizado.
É de extrema importância ficar atento a comunicados de alterações do endpoint S3 da região, pois isso impactará diretamente o acesso ao Storin.
Arquitetura de referência
Cliente → Domínio → NGINX → Bucket no Storin (arquivos estáticos)
1. Estrutura do bucket
meu-site/
├── index.html
├── assets/
├── css/
├── js/
└── favicon.ico
2. Configuração do NGINX
Redirecionamento HTTP para HTTPS
server {
listen 80;
listen [::]:80;
server_name seudominio.com;
return 301 https://$host$request_uri;
}
Configuração HTTPS
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name seudominio.com;
ssl_certificate /var/lib/jelastic/SSL/jelastic.chain;
ssl_certificate_key /var/lib/jelastic/SSL/jelastic.key;
set $bucket meu-site;
set $upstream sp1-s3.saveincloud.io;
location = / {
proxy_ssl_server_name on;
proxy_pass https://$upstream;
rewrite ^ /$bucket/index.html break;
proxy_set_header Host $upstream;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
location / {
proxy_ssl_server_name on;
proxy_pass https://$upstream;
rewrite ^/(.*)$ /$bucket/$1 break;
proxy_set_header Host $upstream;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_intercept_errors on;
error_page 404 = @spa;
}
location @spa {
proxy_ssl_server_name on;
proxy_pass https://$upstream;
rewrite ^ /$bucket/index.html break;
proxy_set_header Host $upstream;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
3. Comportamento esperado
/→ index.html/assets→ arquivos do bucket/rota→ fallback SPA
Suporte
Em caso de dúvidas, entre em contato com o suporte da SaveinCloud.