Pular para o conteúdo principal

Configurar domínio personalizado para buckets do Storin com NGINX

Visão geral

O Storin, serviço de Object Storage da SaveinCloud, disponibiliza acesso aos objetos por meio de endpoints compatíveis com S3, como no exemplo abaixo:

https://sp1-s3.saveincloud.io

Em muitos cenários, no entanto, é desejável publicar o conteúdo do bucket utilizando um domínio personalizado, por exemplo:

https://cdn.seudominio.com

Essa abordagem é amplamente utilizada em provedores de cloud pública e é recomendada para:

  • distribuição de arquivos estáticos
  • entrega de conteúdo público
  • padronização de URLs
  • utilização de domínio próprio (white-label)
  • integração com aplicações web

Ao utilizar um proxy reverso com NGINX, você pode expor o conteúdo do bucket por meio do seu domínio, mantendo o endpoint S3 do Storin como origem.

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 de S3 da região, pois isso impactará diretamente o acesso ao Storin


Arquitetura de referência

Cliente → Domínio personalizado → NGINX → Bucket no Storin

Pré-requisitos

Antes de iniciar, verifique se você possui:

  • um bucket criado no Storin
  • objetos disponíveis para teste
  • servidor com NGINX instalado
  • domínio ou subdomínio configurado
  • certificado TLS válido para HTTPS

1. Configurar o DNS

Crie um subdomínio dedicado, por exemplo:

cdn.seudominio.com

Configure os registros DNS:

  • Tipo A: apontando para o IPv4 do proxy
  • Tipo AAAA: apontando para o IPv6 do proxy (opcional)

2. Configurar o NGINX para acesso HTTP

Use a configuração abaixo para publicar o bucket por meio do seu domínio:

server {
listen 80;
listen [::]:80;
server_name cdn.seudominio.com;

location / {
proxy_ssl_server_name on;
proxy_pass https://sp1-s3.saveincloud.io;

proxy_set_header Host sp1-s3.saveincloud.io;
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_set_header X-Forwarded-Host $host;

proxy_connect_timeout 60s;
proxy_send_timeout 60s;
proxy_read_timeout 60s;
}
}

3. Habilitar HTTPS

Para ambientes de produção, é recomendado redirecionar HTTP para HTTPS e utilizar um certificado TLS válido no proxy reverso.

Redirecionamento HTTP para HTTPS

server {
listen 80;
listen [::]:80;
server_name cdn.seudominio.com;

return 301 https://$host$request_uri;
}

Configuração HTTPS

server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name cdn.seudominio.com.br;

ssl_certificate /var/lib/jelastic/SSL/jelastic.chain;
ssl_certificate_key /var/lib/jelastic/SSL/jelastic.key;

ssl_protocols TLSv1.2 TLSv1.3;
ssl_prefer_server_ciphers on;

location / {
proxy_ssl_server_name on;

proxy_pass https://sp1-s3.saveincloud.io;

proxy_set_header Host sp1-s3.saveincloud.io;
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_set_header X-Forwarded-Host $host;

proxy_connect_timeout 60s;
proxy_send_timeout 60s;
proxy_read_timeout 60s;
}
}


4. Acessar os objetos

Após concluir a configuração, os objetos poderão ser acessados utilizando o domínio personalizado:

https://cdn.seudominio.com/arquivo-publico.txt
Atenção ao CORS

É importante atentar-se caso possua a configuração de CORS do bucket, para que o bucket não bloqueie os acessos ao objeto


Boas práticas

  • utilize HTTPS sempre que possível
  • use alta disponibilidade nos nós de proxy para garantir que não haja interrupções no seu serviço
  • mantenha objetos públicos apenas quando necessário
  • valide o endpoint correto da região do bucket
  • revise permissões e políticas do bucket antes da publicação
  • considere o uso de cache no proxy ou em uma CDN externa para melhorar a performance e diminuir o volume de tráfego de saída

Solução de problemas

403 Forbidden

Esse erro normalmente indica uma das situações abaixo:

  • o objeto não está público
  • a política do bucket restringe o acesso
  • o caminho configurado no proxy_pass está incorreto

Conteúdo não encontrado

Verifique:

  • se o nome do bucket está correto
  • se o objeto realmente existe
  • se a URL acessada corresponde ao caminho esperado

Suporte

Em caso de dúvidas ou problemas na configuração, entre em contato com o suporte da SaveinCloud.