Pular para o conteúdo principal

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

Atenção ao endpoint da região

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.