Dominios personalizados y SSL automático para el desarrollo local: guía completa
Acceder a tu proyecto en http://localhost:8080/myproject da mala imagen cuando lo compartes con clientes. Los desarrolladores profesionales usan dominios limpios como https://clientproject.test, con certificados SSL válidos en los que los navegadores confían.
Esta guía te muestra cómo configurar dominios locales personalizados con HTTPS automático, para que tu entorno de desarrollo sea indistinguible del de producción.
Por qué importan los dominios personalizados
El problema de las URLs localhost:puerto
❌ http://localhost:3000
❌ http://127.0.0.1:8080/project
❌ http://192.168.1.50:9000Problemas:
- Difíciles de recordar
- Números de puerto en las URLs
- Conflictos de cookies entre proyectos
- Problemas de CORS al probar APIs
- Sin HTTPS para probar funciones seguras
El enfoque profesional
✅ https://myapp.test
✅ https://api.myapp.test
✅ https://admin.myapp.testVentajas:
- URLs limpias y fáciles de recordar
- Cookies y almacenamiento por proyecto
- Pruebas de HTTPS correctas
- Enrutamiento basado en subdominios
- Configuración a la par con producción
Cómo funcionan los dominios locales
FlyEnv usa el archivo Hosts (anulación de DNS a nivel del sistema) para asignar dominios a tu máquina local:
# /etc/hosts (macOS/Linux) o C:\Windows\System32\drivers\etc\hosts
127.0.0.1 myproject.test
127.0.0.1 api.myproject.testCombinado con un servidor web local, esto crea un entorno de alojamiento local completo.
Crear tu primer sitio con dominio personalizado
Paso 1: Elige un nombre de dominio
TLDs recomendados para el desarrollo local:
.test— Reservado por el IETF para pruebas (recomendado).local— Común, pero puede entrar en conflicto con mDNS en macOS.localhost— Explícitamente no enrutable.invalid— Otra opción reservada
Evita:
.dev— Perteneciente a Google, fuerza HTTPS en Chrome- TLDs reales (.com, .io) — Pueden entrar en conflicto con sitios reales
Buenos ejemplos:
laravel-project.testclient-site.testapi.myapp.testwordpress.test
Paso 2: Crea el sitio en FlyEnv
- Abre el módulo Host
- Haz clic en "Add Site"
- Configura:
- Host Name:
myproject.test - Host Root:
/Users/you/code/myproject/public - PHP Version: selecciona la versión instalada
- Port: 80 (HTTP por defecto)
- Host Name:

Paso 3: Configura la raíz del proyecto
La ruta raíz depende de tu framework:
| Framework | Directorio raíz |
|---|---|
| Laravel | /project/public |
| WordPress | /project (contiene wp-config.php) |
| Symfony | /project/public |
| Yii2 | /project/web |
| PHP puro | /project (donde está index.php) |
| HTML estático | /project (donde está index.html) |
Importante: configura los permisos correctos:
- Propietario: tu cuenta de usuario
- Grupo: usuario del servidor web (www-data, _www, etc.)
- Permisos: 755 para directorios, 644 para archivos
Paso 4: Activa Auto SSL
SSL es esencial para las pruebas:
- Los Service Workers requieren HTTPS
- Las cookies seguras solo funcionan con HTTPS
- WebRTC requiere HTTPS
- Las APIs modernas (Geolocalización, Cámara) requieren HTTPS
Actívalo en FlyEnv:
- En la configuración del sitio, marca "Use SSL"
- Selecciona "Auto SSL" (recomendado)
- Haz clic en Save

Qué ocurre:
- FlyEnv genera un certificado de CA local
- Crea un certificado específico del sitio firmado por la CA
- Añade la CA al almacén de confianza del sistema
- Configura el servidor web para HTTPS
Nota para Linux: es posible que los navegadores requieran importar la CA manualmente. FlyEnv proporciona la ruta del archivo de certificado.
Paso 5: Inicia los servicios y prueba
- Inicia tu servidor web (Nginx/Apache/Caddy)
- Inicia PHP-FPM (si usas PHP)
- Abre
https://myproject.testen el navegador
Deberías ver un candado verde, sin advertencias del navegador.
Opciones de configuración del sitio
Configuración de puertos
Puertos estándar:
- Puerto 80 — HTTP (sin puerto en la URL)
- Puerto 443 — HTTPS (sin puerto en la URL)
- Puertos personalizados —
http://site.test:8080
Cuándo usar puertos personalizados:
- Al ejecutar varios servidores web
- Para evitar conflictos con servicios del sistema
- Para probar escenarios de puertos específicos
Alias de host
Añade varios dominios que apunten al mismo sitio:
Principal: myproject.test
Alias: www.myproject.test
Alias: alternate.testTodos los alias comparten el mismo certificado SSL automáticamente.
Descubrimiento automático de subdominios (función Park)
La función Park crea subdominios automáticamente a partir de los nombres de las carpetas:
Raíz: /Users/you/projects/myapp
Subdirectorios:
- /api -> api.myapp.test
- /admin -> admin.myapp.test
- /docs -> docs.myapp.testActívala en la configuración del sitio marcando la opción "Park".
Reescritura de URLs
La mayoría de los frameworks requieren reescritura de URLs. FlyEnv incluye plantillas:
Para Nginx:
# Laravel rewrite
location / {
try_files $uri $uri/ /index.php?$query_string;
}
# WordPress rewrite
location / {
try_files $uri $uri/ /index.php;
}Selecciona la plantilla en FlyEnv:
- Edita el sitio
- Haz clic en "Rewrite Rules"
- Elige la plantilla del framework
- Guarda

Configuración avanzada de SSL
Entender el SSL local
Auto SSL de FlyEnv usa una Autoridad de Certificación (CA) local:
CA local (de confianza del sistema)
|
+-- Certificado del sitio (myproject.test)
+-- Certificado del sitio (api.myproject.test)Esto permite crear certificados locales ilimitados sin los límites de tasa de Let's Encrypt ni validación DNS.
Importación manual de certificados (Linux)
Si los navegadores muestran advertencias:
# Find the CA certificate in FlyEnv settings
# Typically: ~/.flyenv/ssl/rootCA.pem
# Import to system trust (Ubuntu/Debian)
sudo cp rootCA.pem /usr/local/share/ca-certificates/flyenv.crt
sudo update-ca-certificates
# For Chrome specifically
# Settings -> Privacy -> Security -> Manage Certificates -> Authorities -> ImportUso de certificados personalizados
Para probar con certificados reales:
- Obtén los archivos del certificado (.crt y .key)
- En la configuración del sitio, selecciona "Custom SSL"
- Sube los archivos del certificado
- Guarda
Útil para:
- Probar certificados de producción en local
- Certificados proporcionados por el cliente
- Pruebas con certificados comodín
Configuraciones con varios servidores
Ejecutar varios servidores web
Puedes ejecutar Apache, Nginx y Caddy simultáneamente en puertos diferentes:
| Servidor | Puerto | Caso de uso |
|---|---|---|
| Nginx | 80/443 | Desarrollo principal |
| Apache | 8080/8443 | Pruebas de reglas .htaccess |
| Caddy | 3000 | Prototipado rápido |
Configura cada sitio con su servidor y puerto preferidos.
Simulación de balanceo de carga
Prueba configuraciones con balanceo de carga en local:
Petición del usuario
|
v
Nginx (load balancer) -> localhost:3001 (Instance 1)
-> localhost:3002 (Instance 2)
-> localhost:3003 (Instance 3)Configúralo en el bloque upstream de Nginx para pruebas realistas.
Solución de problemas
"No se puede acceder a este sitio"
Comprueba:
- ¿El servidor web está en ejecución?
- ¿El puerto es correcto?
- ¿El archivo hosts está actualizado? (FlyEnv lo hace automáticamente)
- Caché de DNS:
sudo killall -HUP mDNSResponder(macOS)
"La conexión no es privada" (error de SSL)
macOS:
- FlyEnv debería confiar automáticamente en la CA
- Si no lo hace, confía en ella manualmente en Keychain Access
Windows:
- Importa el certificado de la CA en "Entidades de certificación raíz de confianza"
Linux:
# Update CA store
sudo update-ca-certificates
# Restart browser"502 Bad Gateway" o "504 Gateway Timeout"
Causas:
- PHP-FPM no está en ejecución
- Ruta del socket de PHP-FPM incorrecta
- Error de la aplicación
Soluciones:
- Inicia PHP en FlyEnv
- Comprueba que la versión de PHP coincide con la configuración del sitio
- Revisa los logs de error de la aplicación
"403 Forbidden"
Causa: permisos de archivo o indexación de directorios desactivada
Soluciones:
- Comprueba los permisos de las carpetas (755 para directorios)
- Asegúrate de que existe index.php/index.html
- Activa el listado de directorios en la configuración del servidor web (si lo deseas)
Los dominios se resuelven a una IP incorrecta
Causa: un DNS externo anula los hosts locales
Soluciones:
- Usa el TLD
.test(reservado, nunca tiene DNS público) - Comprueba que
/etc/hoststenga las entradas correctas - Vacía la caché de DNS
Preguntas frecuentes (FAQ)
P: ¿Puedo usar dominios reales como mysite.com en local?
R: Sí, pero no es recomendable. Impide acceder al sitio real. Usa .test en su lugar.
P: ¿Estos certificados SSL funcionarán para otras personas?
R: No. Los certificados locales solo son de confianza en tu máquina. Para compartir, usa Cloudflare Tunnel.
P: ¿Cuántos sitios puedo crear?
R: Ilimitados. Solo estás limitado por los recursos de tu sistema.
P: ¿Puedo compartir sitios locales con mi equipo?
R: Los sitios locales solo son accesibles desde localhost. Para dar acceso al equipo, usa Cloudflare Tunnel o despliega en un servidor compartido.
P: ¿Tengo que renovar los certificados SSL locales?
R: No. Los certificados locales generados por FlyEnv no caducan ni necesitan renovación.
*P: ¿Puedo usar comodines como .test?
R: Sí. Crea un sitio con *.myproject.test para que coincida con cualquier subdominio.
P: ¿Qué pasa con IPv6?
R: FlyEnv admite localhost tanto en IPv4 (127.0.0.1) como en IPv6 (::1).
Buenas prácticas
- Usa el TLD .test — Evita conflictos con sitios web reales
- Replica la estructura de producción — Mantén los dominios locales similares a los de producción
- Activa SSL siempre — Prueba con HTTPS desde el primer día
- Organiza con subdominios — api.myapp.test, admin.myapp.test
- Controla las configuraciones con versiones — Exporta y confirma las configuraciones de los sitios
Próximos pasos
Ahora que tienes un alojamiento local profesional configurado:
- Proxy inverso para Node.js — Aloja aplicaciones Node con URLs limpias
- Cloudflare Tunnel — Comparte sitios de forma segura
- Pruebas de email con Mailpit — Entorno de desarrollo completo
Descarga FlyEnv para empezar hoy con dominios personalizados.