在反向代理穿透中 transport.proxyProtocolVersion 的作用与用途
› 社区话题 › Linux/macOS 与自动化运维 › FRP + Nginx + Docker 真实客户端 IP 透传配置与抓包排查完整总结 › 在反向代理穿透中 transport.proxyProtocolVersion 的作用与用途
2025年7月20日 - 下午6:11 #792
追光
管理员
1. transport.proxyProtocolVersion 的作用
用于 TCP 代理场景,在连接头中加入 Proxy Protocol v1/v2,传递客户端 IP。
HTTP/HTTPS 代理不需要,因为已经有 X-Forwarded-For 和 X-Real-IP。
场景 | 是否开启 v2 | IP 获取方式 |
|---|---|---|
HTTP | ✗ | X-Forwarded-For |
HTTPS | ✗ | X-Forwarded-For |
TCP + Nginx | ✓ | Proxy Protocol |
TCP + SSH | ✗ | 无需(直连) |
TCP + AI 模型 | ✗ | 无需(直连) |
2. 什么时候用 v2?
仅在 TCP 穿透 → 后端有 Nginx 或其他支持 Proxy Protocol 的程序时使用。
示例:
listen 80 proxy_protocol;
real_ip_header proxy_protocol;
set_real_ip_from <FRP客户端IP>;如果后端没有 Nginx(如 SSH、大模型端口),不能开启 v2,否则连接报错(因为目标程序无法解析 Proxy Protocol 头)。
3. HTTP 穿透(你的情况)
默认 HTTP 类型的 FRP 已透传真实 IP。
只需 Nginx 配置:
set_real_ip_from 0.0.0.0/0;
real_ip_header X-Forwarded-For;
real_ip_recursive on;4. 为什么加 v2 出错?
因为目标程序(SSH 或 AI 模型)期望 纯 TCP 流,收到 Proxy Protocol 头会解析失败,直接断开。
✅ 一句话记忆
HTTP 场景:不用 v2,靠 X-Forwarded-For。
TCP 场景:只有在后端支持 Proxy Protocol 时才加 v2,否则别加。