Hola a todos,
Estoy ejecutando n8n autohospedado mediante Docker Compose detrás de Plesk (Ubuntu 20.04,
Plesk Obsidian 18.0.78), con nginx como proxy inverso frente a Docker.
Configuración:
- Imagen oficial de Docker de n8n (n8nio/n8n)
- Proxy inverso: nginx de Plesk (redirigiendo a Apache, luego al contenedor Docker
en el puerto 5678) - Dominio: subdominio con su propio certificado SSL (Let’s Encrypt vía Plesk)
Variables de entorno ya configuradas:
N8N_HOST=bot.publicides.com
N8N_PORT=5678
N8N_PROTOCOL=https
WEBHOOK_URL=https://bot.publicides.com/
N8N_SECURE_COOKIE=false
N8N_TRUST_PROXY=true
N8N_PROXY_HOPS=2
N8N_PUSH_BACKEND=sse
N8N_EDITOR_BASE_URL=https://bot.publicides.com/
Directivas adicionales de nginx ya añadidas:
proxy_read_timeout 300s;
proxy_connect_timeout 300s;
proxy_send_timeout 300s;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection “upgrade”;
proxy_set_header Host $host;
proxy_pass_request_headers on;
Problema:
Cualquier acción del editor en vivo (Ejecutar nodos anteriores, Probar este disparador, incluso
simplemente abrir la pestaña Ejecuciones) falla con “Problema al ejecutar el flujo de trabajo —
Conexión perdida con el servidor” en la interfaz.
Los registros de Docker muestran este error que se repite:
Origin header does NOT match the expected origin. (Origin: “undefined”
→ “N/A”, Expected: “undefined” → “undefined”, Protocol: “undefined”)
ResponseError: Invalid origin!
at Push.handleRequest (/usr/local/lib/node_modules/n8n/src/push/index.ts:157:10)
at /usr/local/lib/node_modules/n8n/src/push/index.ts:112:17
at Layer.handleRequest (…router/lib/layer.js:152:17)
…
at /usr/local/lib/node_modules/n8n/src/auth/auth.service.ts:158:18
Lo que ya he descartado:
- Los recursos del servidor están bien (RAM ≈72% utilizada pero mucho espacio disponible, CPU baja,
uso de disco bajo) - No es un problema del navegador/caché — mismo error en modo incógnito, navegador diferente, dispositivo diferente,
y datos móviles en lugar de WiFi - El contenedor de Docker está activo y saludable (docker ps confirma “Up”)
- Los webhooks funcionan perfectamente — un POST curl manual a la URL de webhook de producción
devuelve {“message”:“Webhook call received”} y el flujo de trabajo se ejecuta
correctamente de principio a fin (confirmado por la actualización de la hoja de Google de destino) - El dominio NO está proxificado a través de Cloudflare (solo DNS / nube gris)
Entonces, la ejecución real del flujo de trabajo vía webhook funciona perfectamente — solo la
conexión push WebSocket/SSE del editor en vivo falla, aparentemente rechazada
debido a una discrepancia del encabezado Origin en algún lugar entre nginx y el
servicio de autenticación de n8n.
¿Alguien ha encontrado este error específico de push “Invalid origin” con
la configuración de nginx de Plesk? ¿Hay alguna variable de entorno adicional o directiva nginx
necesaria para reenviar/establecer correctamente el encabezado Origin para el punto final push?
¡Gracias de antemano!