赢取 1 TB 住宅流量、 iPhone 18 Pro + 另外 33 份奖品充值 $50 = 1 张抽奖券参加抽奖
企业

n8n 代理配置指南:节点设置、环境变量和反向代理

从云服务器执行 n8n 工作流程经常会触发速率限制。目标平台会阻止来自已知数据中心 IP 的请求。正确的 n8n 代理配置可以恢复运营稳定性。主要目标是确保无缝的 自动化 代理集成直接融入您的架构。

TL;DR:n8n 代理设置检查清单

  • HTTP Request 节点支持隔离路由,而不会影响全局容器环境。

  • 自动化工作流程的 n8n 代理身份验证需要使用 Proxy-Authorization 标头的通用凭据类型(Generic Credential Type)。

  • 内部 proxy-from-env 包严格优先处理小写环境变量。

  • 本地数据库需要 NO_PROXY 变量定义以防止网络回环。

  • Apache 反向代理需要 WebSocket 标头路由才能使编辑器界面正常运行。

  • N8N_PROXY_HOPS=1 变量可解决负载均衡器后的客户端 IP 检测错误。

什么是 n8n 以及为什么它需要代理

n8n 是一个先进的工作流程自动化平台。工程师使用其基于节点的可视化编辑器来连接数据库、CRM 和第三方应用程序,无需编写大量样板代码。该系统在数百个外部 API 之间协调数据。然而,直接的服务器请求会迅速耗尽目标平台的限制。严格的 n8n 出站代理配置可以解决三个运营任务。

  • 首先,它分配请求负载以安全地扩展 API 速率限制。

  • 其次,它本地化 网络足迹 以访问区域数据。

  • 第三,它在管理多个配置文件时隔离环境。

👉 CyberYozh App 生态系统涵盖这些基础设施需求,便捷地提供 虚拟卡 和真实的 ISP 号码 以完成完整的配置文件设置。

n8n 自动化工作流程的代理类型

您的网络选择决定工作流程的可靠性。成功的 n8n 代理配置在很大程度上取决于选择正确的 IP 池。

  • 移动 LTE/5G 代理。 这些通过真实的蜂窝设备路由流量。它们为社交平台操作提供最高的信任率。

  • 住宅静态 ISP 代理。 来自真实家庭互联网提供商的固定地址。它们可以保持长会话以进行连续数据抓取。

  • 住宅轮换代理。 拥有数百万地址的全球网络。Sticky session 功能可以为可扩展任务保持单个 IP 长达 24 小时。

  • 数据中心代理。 为高速分析流程优化的专用服务器。

👉 CyberYozh App 提供所有这些网络类型,具备 API 控制和免费地理定位功能。

如何为 n8n HTTP 请求节点配置代理

全局参数经常与 TLS 握手冲突。隔离路由可以解决这个问题。工程师直接在节点界面内配置 n8n HTTP Request 节点代理参数。这样可以动态更改配置,完全避免全局环境限制。

打开节点界面。展开 Options 部分。激活 Proxy 开关并输入主机 URL,格式为 http://IP:PORT。标准内置身份验证经常会丢失凭据。选择 Generic Credential Type 并创建新的 Header Auth 记录。将 Name 设置为 Proxy-Authorization。像 cURL 这样的工具会隐式编码凭据,但 n8n 需要显式的标头。对于 Value 字段,使用 n8n 的内置表达式自动编码您的 CyberYozh 凭据:

javascript
={{'Basic ' + $btoa('your_username:your_password')}}

多步骤流程需要上下文保持和稳定的会话管理。 住宅轮换代理 需要在多个请求中保持单个 IP 地址。CyberYozh 仪表板具有内置代理生成器来自动处理此问题。选择 Custom duration 设置(Sticky session)并定义时间范围(最长 24 小时)。系统会生成直接绑定到后端服务器上该稳定会话的凭据。您只需将此特定登录名和密码编码到 HTTP Request 节点内的 Proxy-Authorization 标头中即可。

验证架构:在 n8n 工作流中测试代理连接

在将 n8n 代理配置推送到生产环境之前,构建一个简单的测试工作流。将 HTTP Request 节点指向外部 IP 识别 API(如 api.ipify.org),使用 GET 请求。检查 JSON 输出。目标服务必须看到租用的代理 IP,而不是您的 n8n 实例的 IP 地址。

👉 CyberYozh 欺诈评分检查器 会在您启动之前根据 ThreatMetrix 和 PerimeterX 等数据库评估您的 IP 质量。这有助于防止目标 API 拒绝您的请求。

全局基础设施:n8n 代理环境变量

容器级 n8n 代理配置依赖于在 .env 文件中定义参数。CyberYozh 使用标准的用户名和密码身份验证。您直接在 URL 字符串中传递这些凭据。n8n 核心使用内置的 Node.js 包 proxy-from-env 读取这些参数。此库强制执行严格的层次结构:小写变量始终优先于大写变量。如果您定义了 HTTPS_PROXY,但主机操作系统默认有一个空的 https_proxy 变量,n8n 会完全忽略您的路由规则。始终定义两种格式样式以保证成功路由:

HTTP_PROXY=http://username:password@IP:PORT

HTTPS_PROXY=http://username:password@IP:PORT

http_proxy=http://username:password@IP:PORT

https_proxy=http://username:password@IP:PORT

ALL_PROXY=http://username:password@IP:PORT

您必须配置 NO_PROXY。包括 localhost、127.0.0.1 和您的内部 Docker 子网,以维护与本地 PostgreSQL 或 Redis 数据库的连接。否则,此内部流量会命中外部网关并超时。设置 NO_PROXY=* 会立即禁用所有容器级代理。查看 n8n 官方文档 以获取完整的环境变量列表,从而微调整体容器基础设施。

入站流量:n8n Apache 反向代理配置

Apache 或 Nginx 服务器处理 SSL 终止。它们解密传入流量并将其路由到容器的本地端口 5678。这种拓扑结构会产生两个结构性问题。

首先,通过 Apache 反向代理 路由 n8n webhook 会破坏 UI 链接,因为应用程序认为其基础地址是 localhost。通过注入 N8N_EDITOR_BASE_URL 变量来修复此问题。将其设置为您的确切公共域名(如 https://n8n.cyberyozh.com)。像 WEBHOOK_URL 这样的旧变量格式已被弃用,会触发系统警告。

其次,内部日志只能看到 Apache 服务器 IP。内置访问控制列表停止工作。添加 N8N_PROXY_HOPS=1 变量。它强制 Express.js 核心信任外部标头。

编辑器界面依赖于 WebSocket。您的服务器必须拦截并转发这些请求。没有它们,编辑器界面将循环冻结并断开连接。在 Apache VirtualHost 块内添加以下指令,以确保透明的协议升级和真实客户端 IP 转发:

ProxyPreserveHost On

RequestHeader set X-Forwarded-Proto "https"

RewriteEngine On

RewriteCond %{HTTP:Upgrade} =websocket [NC]

RewriteRule /(.*)           ws://localhost:5678/$1 [P,L]

ProxyPass / http://localhost:5678/

ProxyPassReverse / http://localhost:5678/

故障排除矩阵

症状 / 错误

可能原因

工程解决方案

HTTP Request 返回 407 Proxy Authentication Required

凭据格式不正确。

切换到通用凭据类型。使用带有 Proxy-Authorization 标头的 Header Auth。

访问 HTTPS 资源时出现 ECONNRESET 错误

Axios 库的 HTTP CONNECT 限制。

在 HTTP Request 节点设置中使用细粒度代理路由。

Webhook UI 链接显示 http://localhost:5678

应用程序隔离在反向代理后面。

将 N8N_EDITOR_BASE_URL=https://[domain] 注入到 Docker 环境中。不要使用已弃用的旧版变量。

编辑器抛出循环的 Connection lost 错误

Apache 断开 WebSocket 连接。

在 Apache 配置中添加 Upgrade 和 Connection 标头指令。

全局代理变量被忽略

proxy-from-env 优先级冲突。

在 docker-compose.yml 中同时声明小写和大写格式。

本地数据库返回超时

内部流量命中外部网关。

使用 localhost 和 Docker 子网定义 NO_PROXY。

数据编排完全依赖于传输栈质量。精心规划的 n8n 代理配置可防止握手失败。细粒度的 HTTP Request 节点设置和明确的环境变量声明消除了优先级冲突。使用 CyberYozh 基础设施可保证会话一致性。您可以在任何规模下获得可预测的管道执行。

关于 n8n 代理配置的常见问题

如何修复「ValidationError: The X-Forwarded-For header is set」错误?

这发生在反向代理后面。Express.js 核心默认拒绝外部标头。将 N8N_TRUST_PROXY=true 和 N8N_PROXY_HOPS=1 添加到您的 Docker 配置中。重启容器。

为什么 HTTP Request 节点忽略 HTTPS_PROXY 环境变量?

Axios 库在通过标准 HTTP 网关隧道传输 HTTPS 时遇到困难。直接在 HTTP Request 节点参数内配置路由。这样可以正确隔离连接。

如何解决「400 Bad Request: plain HTTP request was sent to HTTPS port」?

节点正在尝试将 HTTP 流量发送到端口 443。检查目标 URL 字符串中的协议。验证代理设置本身没有协议不匹配。

为什么社区节点绕过 proxy-from-env 包?

许多第三方节点使用自定义请求库。它们不读取全局环境变量。您必须在每个自定义节点的参数内手动输入路由设置。

如何在多节点工作流中维护单个 IP?

在您的 CyberYozh 仪表板中使用内置凭据生成器来生成轮换住宅代理。选择自定义持续时间设置以初始化 Sticky 会话。系统提供特定凭据,将您的连接锁定到单个物理 IP 地址,持续定义的时间范围。

哪些 Apache 标头可防止 n8n 编辑器冻结?

界面使用 WebSocket 来流式传输执行日志。为 Upgrade 和 Connection 标头配置透明路由。没有它们,编辑器将抛出循环断开连接错误。

我可以将数据库流量路由到全局代理网关之外吗?

可以。您使用 NO_PROXY 系统变量。输入 localhost、127.0.0.1 和您的内部 Docker 子网掩码。数据库请求将绕过外部网关。

如何修复「connect ECONNREFUSED ::1:11434」错误?

当您的操作系统启用了 IPv6,但本地服务(如 Ollama)仅侦听 IPv4 时,就会发生这种情况。将节点连接设置中的主机地址从 localhost 别名更改为显式的 IPv4 地址:127.0.0.1。