Sistemas de Subdominios Dinámicos
Cómo implementar un sistema para crear subdominios dinámicos con configuración automática de Nginx y SSL.
¿Qué son los subdominios dinámicos?
Un sistema de subdominios dinámicos permite crear automáticamente nuevos subdominios (p. ej. usuario.tudominio.com) sin intervención manual en la configuración del servidor. Son útiles para plataformas SaaS, entornos de staging por rama o portales multi-tenant.
Arquitectura general
El sistema se compone de tres capas:
- DNS wildcard: un registro
*.tudominio.com → IPque dirige todos los subdominios al servidor. - Nginx con
server_namedinámico: un bloqueserverque captura cualquier subdominio y lo enruta. - Certificado wildcard: un certificado SSL
*.tudominio.compara cubrir todos los subdominios a la vez.
Certificado wildcard con Certbot
Los certificados wildcard requieren validación DNS. Usando Certbot con el plugin de tu proveedor DNS:
sudo certbot certonly \
--dns-cloudflare \
--dns-cloudflare-credentials ~/.secrets/cloudflare.ini \
-d "*.tudominio.com" -d "tudominio.com"
Configuración Nginx para wildcard
server {
listen 443 ssl;
server_name ~^(?<subdomain>.+)\.tudominio\.com$;
ssl_certificate /etc/letsencrypt/live/tudominio.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/tudominio.com/privkey.pem;
root /var/www/tudominio.com/apps/$subdomain/public;
index index.html;
location / {
try_files $uri $uri/ =404;
}
}
La variable $subdomain captura la parte dinámica y permite servir contenido de un directorio diferente por subdominio.
Creación automática de subdominios vía script
#!/bin/bash
SUBDOMAIN=$1
BASE_DIR="/var/www/tudominio.com/apps"
mkdir -p "$BASE_DIR/$SUBDOMAIN/public"
echo "<h1>$SUBDOMAIN activo</h1>" > "$BASE_DIR/$SUBDOMAIN/public/index.html"
sudo nginx -t && sudo systemctl reload nginx
echo "Subdominio $SUBDOMAIN.tudominio.com creado"