【已解决】通过1panel部署了n8n但是 n8n节点无法建立wss连接


wss一直链接不上
n8n版本:1.89.1

@AIBot-n8n

@AIBot-n8n 看看这个。

搜索

找到 '#n8n n8n wss connection lost Invalid origin tags:n8n' 的 0 个结果

从你提供的截图和信息来看,n8n节点无法建立wss连接,并且报错 “Invalid origin!”。这通常是由于以下原因导致:

  1. Origin配置问题: WebSocket连接需要验证Origin,以防止跨站攻击。你的n8n实例可能没有正确配置允许的Origin。
  2. 反向代理配置: 如果你使用了反向代理(如Nginx、Apache等),需要确保代理服务器正确传递WebSocket连接的头部信息,特别是HostOrigin
  3. CORS问题: 跨域资源共享(CORS)策略可能会阻止WebSocket连接。你需要配置n8n服务器允许来自你的客户端域的请求。
  4. 防火墙或网络问题: 防火墙或网络策略可能会阻止WebSocket连接。确保你的防火墙允许WebSocket流量(通常是443端口)。

建议排查步骤:

  • 检查n8n配置: 确保n8n的配置中设置了正确的WEBHOOK_URLN8N_HOST环境变量。WEBHOOK_URL应该设置为你的n8n实例的完整URL,包括协议和域名。N8N_HOST设置为你的n8n绑定的域名。

  • 检查反向代理配置: 如果你使用了反向代理,请检查代理配置是否正确传递WebSocket头部信息。例如,在Nginx中,你需要添加以下配置:

    location / {
        proxy_pass http://your_n8n_backend;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "Upgrade";
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
    
  • 检查CORS配置: 确保n8n允许来自你的客户端域的请求。你可能需要在n8n的配置中设置N8N_CORS_ALLOWED_ORIGINS环境变量。

  • 检查防火墙设置: 确保你的防火墙允许WebSocket流量通过。

由于你使用1Panel部署n8n,可以检查1Panel中与n8n相关的配置项,例如域名、端口、反向代理等,确认配置是否正确。同时,查看1Panel的日志,看看是否有与n8n相关的错误信息。

如果以上步骤都无法解决问题,建议提供更详细的配置信息,例如1Panel的配置、n8n的配置、反向代理的配置等,以便更好地分析问题。

不建议使用 1Panel 应用商城里的 n8n,建议参考我们的教程,用 1Panel 的容器功能部署 n8n,这样很多后续操作都会更方便:

补充说明,这个问题的实际情况来源于题主采用的是跨设备反向代理。
也就是 n8n 容器在 A 机器,绑定域名配置反代的 1Panel 在 B 机器,两台设备在同一局域网。域名访问到 B 之后,反代到 A。
理论上这是没有任何问题的,但我在 1Panel 的论坛上找到了类似的情况反馈。1Panel 的当前版本(1.10.29-lts)似乎存在 BUG,也就是跨设备反代无法正常传递 WSS:

问题已解决

nginx增加

    proxy_set_header Host $host;
    proxy_set_header Origin $http_origin;

或者直接
proxy_set_header Host $host;
proxy_set_header Origin 你的域名;

好怪,我的所有实例里没有 proxy_set_header Origin $http_origin; 这句也能运行。

不知道了,好像是n8n从1.8.7版本以后增加了这个校验,1.8.6版本的都没有这个问题,我自己部署了1.8.6的也测试了,没有问题

@pls 怎么修改帖子标题啊,我改一下已解决