Despliegue de Apps Web Xojo con el Proxy Inverso de Caddy

A continuación encontrarás traducido al Castellano el artículo escrito por Gabriel Ludosanu y publicado originalmente en el Blog oficial de Xojo.

El despliegue de aplicaciones web creadas con Xojo ofrece a los desarrolladores unas rutas flexibles para su despliegue en producción. Para aquellos desarrolladores que priorizan una gestión mínima de la infraestructura, Xojo Cloud supone una solución totalmente auto-gestionada con escalado automático, SSL, y sin necesidad de mantenimiento del servidor. Sin embargo, para aquellos desarrolladores que requieren un control más granular sobre su entorno de despliegue, la implementación de un proxy inverso como Caddy proporciona un rendimiento de nivel empresarial al tiempo que simplifica las operaciones críticas.

Esta guía se centra en las configuraciones de Caddy de producción que simplifican los despliegues de aplicaciones Xojo auto-gestionadas, ofreciendo:

  • Gestión de certificado TLS automático.
  • Balanceo de carga nativo entre instancias.
  • Configuración simplificada en comparación con proxies tradicionales.
  • Optimización de cabeceras, especialmente afinadas para el framework de Xojo.

Aprenderás estrategias de configuración que, en algunas pruebas, optimiza los recursos hasta en un 40% en comparación con los proxies convencionales, al tiempo que se mantiene el rendimiento de Xojo.

Estrategias de Configuración Fundamentales

Configuración de Proxy Inverso Básico

yourdomain.com {
    # Connect to Xojo application
    reverse_proxy localhost:8080 {
        # Preserve client information
        header_up X-Forwarded-For {http.request.remote.host}
        header_up Host {http.request.host}
    }
    
    # Automate HTTPS
    tls admin@yourdomain.com
}

Nota: La directiva header_up asegura que Xojo registre correctamente las IP de los clientes en los eventos web.

Balanceo de Carga entre Instancias

app.yourdomain.com {
    reverse_proxy localhost:8080 localhost:8081 localhost:8082 {
        load_balancer {
            policy round_robin
            health_interval 10s
            health_uri /health
        }
        # Timeouts for heavy processing
        lb_try_duration 30s
    }
}

Medidas de Seguridad Fortalecidas

yourdomain.com { 
	# Critical protection headers 
	header { 
		X-Content-Type-Options "nosniff" 
		X-Frame-Options "DENY" 
		Content-Security-Policy "default-src 'self'" 
	} 
	# Rate limiting for API endpoints 
	route /api/* { 
		rate_limit { 
			zone api 
			burst 100 
			period 10s 
		} 
	} 
}

Guiones de Despliegue de Producción

Servicio Systemd en Linux

/etc/systemd/system/xojo-caddy.service:


[Unit]
Description=Xojo Caddy Reverse Proxy
After=network.target
[Service]
Type=simple
User=caddy
ExecStart=/usr/bin/caddy run --config /etc/caddy/Caddyfile
Restart=on-failure
RestartSec=5
[Install]
WantedBy=multi-user.target

Si precisas de una guía más amplia, paso a paso, sobre cómo preparar tu servidor consulta nuestro tutorial sobre este tema: “Tutorial: Deploying Web Apps on Linux“. El anterior servicio systemd se integra a la perfección con dicho flujo de trabajo.

Paquete de despliegue Windows

Xojo-Caddy.bat:


@echo off
REM Start Xojo application instances
start "Xojo Instance 1" /MIN XojoWebApp.exe --port=8080
start "Xojo Instance 2" /MIN XojoWebApp.exe --port=8081
 
REM Launch Caddy reverse proxy
start "Caddy Proxy" /MIN caddy.exe run --config C:\caddy\Caddyfile
Optimized Xojo-Caddy Template
Save as Caddyfile in your deployment root:


# Production-Grade Xojo Proxy Template
yourdomain.com, www.yourdomain.com {
    # Automated HTTPS
    tls contact@yourdomain.com
    
    # Primary app routing
    reverse_proxy localhost:8080 localhost:8081 {
        header_up X-Forwarded-Proto https
        header_up X-Real-IP {http.request.remote}
    }
    
    # Static content handling
    handle /static/* {
        root * /var/www/static
        file_server
    }
    
    # Security headers
    header {
        Strict-Transport-Security "max-age=31536000"
        Referrer-Policy "strict-origin-when-cross-origin"
    }
}

Conclusión

Caddy revoluciona el despliegue de las apps web Xojo al eliminar la complejidad de los proxy al tiempo que proporciona capacidades a nivel empresarial:

  • Operaciones simplificadas: un único archivo de configuración sustituye a las configuraciones complejas de proxy.
  • Seguridad automática: protección HTTPS continua sin mantenimiento.
  • Escalado simplificado: el balanceo de carga incorporado crece al mismo ritmo que tu base de usuarios.
  • Sobrecarga reducida: en las pruebas de rendimiento, 40% menos recursos en comparación con los proxies convencionales.

Implementa la plantilla Xojo-Caddy proporcionada para obtener un despliegue de producción en menos de 15 minutos. Monitoriza el rendimiento mediante el punto final /metrics proporcionado por Caddy y escala horizontalmente a medida que se incremente el tráfico.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *