ValidationError: The 'X-Forwarded-For' header is set but the Express 'trust proxy' setting is false (default). This could indicate a misconfiguration which would prevent express-rate-limit from accurately identifying users. See https://express-rate-limit.github.io/ERR_ERL_UNEXPECTED_X_FORWARDED_FOR/
快速解法(對多數人有效)
把 n8n 容器(或服務)的環境變數加上:
N8N_PROXY_HOPS=1

錯誤不見囉!!

這表示「n8n 前面只有 一層 反向代理」——最常見的單一 Nginx / Apache / LiteSpeed 反代情境。
我先用 N8N_PROXY_HOPS=1 測,問題就消失;你也可以先這樣試。如果之後發現你其實有多層代理,再把數字調整即可。
為什麼要設 N8N_PROXY_HOPS
?
- 使用者的真實 IP 會被每一層代理附加在
X-Forwarded-For
鏈中。 - Express 需要知道「前面共有幾層可信代理」,才能從這條鏈往回數,取到最前面的客戶端 IP。
N8N_PROXY_HOPS
就是把這個數字告訴 n8n(Express)。
我到底該填幾?教你 1 分鐘判斷
原則:每多一層會修改/轉發 X-Forwarded-*
的代理,就 +1。
下表列出常見拓樸與建議值(由左→右是請求路徑;最右邊是你的 n8n):
拓樸(由用戶端 → … → n8n) | 建議 N8N_PROXY_HOPS |
---|---|
瀏覽器 → Nginx/Apache/LiteSpeed → n8n | 1 |
瀏覽器 → Cloudflare(橘雲/CDN) → Nginx/Apache/LiteSpeed → n8n | 2 |
瀏覽器 → 伺服器前端 Nginx → 後端 Apache 反代 → n8n | 2 |
瀏覽器 → CDN(Cloudflare/Akamai) → 雲端負載平衡(ELB/Cloud Load Balancer) → Nginx/Ingress → n8n | 3 |
瀏覽器 → CDN → WAF/安全閘道 → 反向代理 → n8n | 3(有幾層就加幾) |
Plesk 快速判斷小抄
- Plesk(Nginx 直反代 Docker)→ n8n:大多是 1
- Plesk(Nginx 前 → Apache → Docker)→ n8n:通常 2
- Plesk + Cloudflare(代理開啟 / 橘雲)→ Nginx/Apache → n8n:2
- Plesk + Cloudflare +(Nginx→Apache)→ n8n:3
不確定?先設 1,看 Log 是否還會報同樣錯;若還有,依你的實際鏈路每多一層就往上加 1 再測。