N8N - Origin header does NOT match the expected origin

N8N 是一个图形化的低代码自动化流程平台。

在使用 Docker 进行部署,且前面使用 Nginx 反代时,页面操作经常会有报错,提示:Origin header does NOT match the expected origin.

报这个错误的原因,通常是直接使用了官方推荐的docker 命令进行服务启动,如:

1
2
docker volume create n8n_data
docker run -it --rm --name n8n -p 5678:5678 -v n8n_data:/home/node/.n8n docker.n8n.io/n8nio/n8n

这种启动方式默认的 Orgin 是 http://127.0.0.1:8080/, 你在服务启动日志的末尾也能看到这个地址。

但是当使用 Nginx 反代时,需要使用一个域名,如:n8n.example.com,进行访问,此时 Orgin 为 https://n8n.example.com/

要解决这个问题,需要给容器增加一个环境变量:

1
WEBHOOK_URL= https://n8n.example.com/

完整启动命令如下:

1
2
3
#!/bin/bash
docker volume create n8n_data
docker run -it --rm --name n8n -e WEBHOOK_URL=https://n8n.example.com/ -p 5678:5678 -v n8n_data:/home/node/.n8n docker.n8n.io/n8nio/n8n

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
version: '3'
services:
n8n:
image: docker.n8n.io/n8nio/n8n
container_name: n8n
environment:
- WEBHOOK_URL=https://n8n.example.com/
ports:
- "5678:5678"
volumes:
- n8n_data:/home/node/.n8n
restart: unless-stopped

# deploy配置仅在Docker Swarm中生效
deploy:
resources:
limits:
cpus: '0.5'
memory: 512M

volumes:
n8n_data: