¿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:

  1. DNS wildcard: un registro *.tudominio.com → IP que dirige todos los subdominios al servidor.
  2. Nginx con server_name dinámico: un bloque server que captura cualquier subdominio y lo enruta.
  3. Certificado wildcard: un certificado SSL *.tudominio.com para 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"