-
-
Notifications
You must be signed in to change notification settings - Fork 2.5k
Closed
Description
问题
当配置了全局 proxy-url 时,无法在单个 entry 上禁用代理实现直连。
当前行为:
proxy-url: ""→ 继承全局代理(而非"不用代理")- 没有任何官方关键字可以表达"这个 entry 不走代理"
这在以下场景会出问题:大部分 AI 渠道需要通过代理访问,但个别后端(如部署在内网或同区域的自建服务)从服务器直连更稳定。目前没有办法让某个 entry 跳过全局代理。
相关代码
proxy_helpers.go 中的代理选择逻辑:
// 空字符串 = 继承全局,没有"不用代理"的选项
if proxyURL == "" && cfg != nil {
proxyURL = strings.TrimSpace(cfg.ProxyURL)
}当前 Workaround
设置 proxy-url: "direct" 可以意外生效:
- 非空字符串 → 不继承全局代理 ✅
url.Parse("direct")→ scheme 为空 →buildProxyTransport返回 nil → 回退到直连 ✅
但这是依赖实现细节的 hack,日志中会产生 unsupported proxy scheme: 错误,且未来代码变更可能破坏此行为。
建议
在代理解析逻辑中增加对 direct / none 关键字的显式支持:
if proxyURL == "direct" || proxyURL == "none" {
return nil, nil // 直连,不使用代理
}配置示例:
proxy-url: "socks5://user:pass@proxy:1080" # 全局代理
entries:
- path: /external-api
proxy-url: "" # 继承全局代理(现有行为不变)
- path: /internal-api
proxy-url: "direct" # 显式直连,不走代理相关
- PR feat: bypass proxy for private/LAN IPs in management api-call #1960 — 为管理 UI 的 api-call 绕过私有 IP 代理(方向类似,但作用范围不同:feat: bypass proxy for private/LAN IPs in management api-call #1960 只影响管理 UI handler 且仅针对 RFC 1918 地址,本 issue 是希望在 executor 层面支持 per-entry 级别的显式直连控制)
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels