Saltar al contenido principal

Configurar dominio personalizado para buckets de Storin con NGINX

Visión general

Storin, servicio de Object Storage de SaveinCloud, ofrece acceso a los objetos mediante endpoints compatibles con S3, como en el siguiente ejemplo:

https://sp1-s3.saveincloud.io

En muchos escenarios, sin embargo, es deseable publicar el contenido del bucket utilizando un dominio personalizado, por ejemplo:

https://cdn.seudominio.com

Este enfoque es ampliamente utilizado en proveedores de nube pública y se recomienda para:

  • distribución de archivos estáticos
  • entrega de contenido público
  • estandarización de URLs
  • uso de dominio propio (white-label)
  • integración con aplicaciones web

Al utilizar un proxy inverso con NGINX, puedes exponer el contenido del bucket mediante tu dominio, manteniendo el endpoint S3 de Storin como origen.

Atención al endpoint de la región

El endpoint S3 puede variar según la región donde se creó el bucket. En este ejemplo, utilizamos la región SP1.

Siempre valida el endpoint correspondiente a tu entorno antes de publicar en producción. Cambios en el endpoint pueden afectar el funcionamiento del dominio personalizado.

Es de suma importancia estar atento a comunicados sobre cambios en el endpoint S3 de la región, ya que esto impactará directamente el acceso a Storin


Arquitectura de referencia

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

Requisitos previos

Antes de comenzar, verifica que tienes:

  • un bucket creado en Storin
  • objetos disponibles para prueba
  • servidor con NGINX instalado
  • dominio o subdominio configurado
  • certificado TLS válido para HTTPS

1. Configurar el DNS

Crea un subdominio dedicado, por ejemplo:

cdn.seudominio.com

Configura los registros DNS:

  • Tipo A: apuntando al IPv4 del proxy
  • Tipo AAAA: apuntando al IPv6 del proxy (opcional)

2. Configurar NGINX para acceso HTTP

Usa la configuración siguiente para publicar el bucket mediante tu dominio:

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 entornos de producción, se recomienda redirigir HTTP a HTTPS y usar un certificado TLS válido en el proxy inverso.

Redirección HTTP a HTTPS

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

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

Configuración 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. Acceder a los objetos

Después de completar la configuración, los objetos podrán ser accedidos usando el dominio personalizado:

https://cdn.seudominio.com/arquivo-publico.txt
Atención al CORS

Es importante prestar atención si tienes configurado CORS en el bucket, para que el bucket no bloquee los accesos al objeto


Buenas prácticas

  • utiliza HTTPS siempre que sea posible
  • usa alta disponibilidad en los nodos de proxy para garantizar que no haya interrupciones en tu servicio
  • mantiene objetos públicos solo cuando sea necesario
  • valida el endpoint correcto de la región del bucket
  • revisa permisos y políticas del bucket antes de la publicación
  • considera el uso de caché en el proxy o en una CDN externa para mejorar el rendimiento y reducir el volumen de tráfico saliente

Solución de problemas

403 Forbidden

Este error normalmente indica una de las siguientes situaciones:

  • el objeto no es público
  • la política del bucket restringe el acceso
  • la ruta configurada en proxy_pass es incorrecta

Contenido no encontrado

Verifica:

  • que el nombre del bucket sea correcto
  • que el objeto realmente exista
  • que la URL accedida corresponda a la ruta esperada

Soporte

En caso de dudas o problemas con la configuración, contacta con el soporte de SaveinCloud.