Apache Traffic Server 中的 Proxy Protocol 配置指南

Apache Traffic Server 中的 Proxy Protocol 配置指南

【免费下载链接】trafficserver apache/trafficserver - 该项目是一个高性能的 HTTP 反向代理服务器,适用于处理大量的网络流量。它具有高效的缓存机制、负载均衡和安全性特性,并支持多种插件和扩展。 【免费下载链接】trafficserver 项目地址: https://gitcode.com/gh_mirrors/traf/trafficserver

什么是 Proxy Protocol

Proxy Protocol 是一种在代理基础设施各层之间传递连接信息的协议标准。在多层代理架构中,如果没有 Proxy Protocol,每个代理节点只能看到直接连接到它的前一跳节点的信息,而无法获取原始客户端的真实连接信息。

Apache Traffic Server (ATS) 支持通过 HTTP 或 TLS 连接使用 Proxy Protocol,能够处理版本 1 和版本 2 的 PROXY 头(虽然 ATS 目前不支持发送 TLV 格式的版本 2 负载)。

为什么需要 Proxy Protocol

在典型的代理链中:

  1. 客户端 → 负载均衡器 → ATS → 源服务器
  2. 如果没有 Proxy Protocol,源服务器只能看到来自 ATS 的连接
  3. ATS 只能看到来自负载均衡器的连接
  4. 原始客户端信息在传输过程中丢失

Proxy Protocol 通过在连接开始时添加特殊头部,将原始客户端信息一直传递到整个代理链的末端。

配置 Proxy Protocol

1. 启用 Proxy Protocol

Proxy Protocol 需要在每个预期接收 PROXY 头部的端口上单独启用。配置方法是通过 proxy.config.http.server_ports 参数。

启用后,传入请求可以带有 PROXY v1 或 v2 头部。没有 PROXY 头部的请求将按照端口配置中的其他指令处理。

2. 安全配置:IP 白名单

出于安全考虑,可以配置信任的 IP 地址列表:

proxy.config.http.proxy_protocol_allowlist = "192.168.1.0/24,10.0.0.1"

重要提示:如果配置了白名单,所有标记为 Proxy Protocol 的端口将只接受来自这些 IP 地址的请求,无论这些连接是否带有 Proxy Protocol 头部。

3. ACL 配置

默认情况下,ATS 使用对等方的客户端 IP 地址应用 ACL。如果启用了 PROXY 协议并希望基于 PROXY 协议传递的 IP 地址应用 ACL,需要在 proxy.config.acl.subjects 中包含 "PROXY"。

功能实现细节

HTTP Forwarded 头部

PROXY 协议头部中的客户端 IP 地址会通过 HTTP Forwarded 头部传递给源服务器。配置通过 proxy.config.http.insert_forwarded 参数控制。

PROXY 协议头部的检测是自动进行的。如果请求以 PROXY 头部开头,ATS 会自动解析并将其信息提供给发送给源服务器的 Forwarded 请求头部。

出站 PROXY 协议

出站 PROXY 协议的配置通过 proxy.config.http.proxy_protocol_out 参数控制。

实际应用示例

考虑以下拓扑结构:

客户端 (192.168.1.100) → 负载均衡器 (10.0.0.1) → ATS (10.0.0.2) → 源服务器

未使用 Proxy Protocol 的情况

如果客户端发起 TLS 连接,源服务器将看到连接来自 ATS (10.0.0.2):

Forwarded: for=10.0.0.2;by=10.0.0.1;proto=https;host=test000001.com

使用 Proxy Protocol 的情况

如果负载均衡器启用了 Proxy Protocol,ATS 将检测 PROXY 头部并将其转换为 Forwarded HTTP 头部。源服务器可以看到 TLS 连接实际来自客户端 (192.168.1.100):

Forwarded: for=192.168.2.100;by=10.0.0.2;proto=https;host=test000001.com

最佳实践建议

  1. 在生产环境中使用 Proxy Protocol 时,务必配置 IP 白名单以防止 IP 欺骗
  2. 在多层代理架构中,确保所有中间节点都正确支持 Proxy Protocol
  3. 对于 HTTPS 流量,Proxy Protocol 头部必须在 TLS 握手之前发送
  4. 监控日志以确保 Proxy Protocol 头部被正确解析和处理

总结

Proxy Protocol 是 Apache Traffic Server 中维护端到端连接信息完整性的重要功能,特别适用于多层代理架构。通过合理配置,可以确保原始客户端信息在整个代理链中不丢失,同时保持系统的安全性。

【免费下载链接】trafficserver apache/trafficserver - 该项目是一个高性能的 HTTP 反向代理服务器,适用于处理大量的网络流量。它具有高效的缓存机制、负载均衡和安全性特性,并支持多种插件和扩展。 【免费下载链接】trafficserver 项目地址: https://gitcode.com/gh_mirrors/traf/trafficserver

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值