ngx_http_proxy_protocol_vendor_module 模块
一、前置要求
-
启用 PROXY 协议
在listen
指令中添加proxy_protocol
参数,例如:server {listen 80 proxy_protocol;listen 443 ssl proxy_protocol;… }
-
商业订阅
本模块仅在 Nginx 商业版中提供。
二、示例配置
http {# 将 GCP 的 PSC 连接 ID 添加到上游请求头proxy_set_header X-Conn-ID $proxy_protocol_tlv_gcp_conn_id;server {listen 80 proxy_protocol;listen 443 ssl proxy_protocol;# 其他常规配置...location / {proxy_pass http://backend;# 示例:将 AWS VPC 端点 ID 透传给后端proxy_set_header X-AWS-VPCE-ID $proxy_protocol_tlv_aws_vpce_id;# 示例:将 Azure 私有端点 LinkID 透传给后端proxy_set_header X-AZURE-PEL-ID $proxy_protocol_tlv_azure_pel_id;}}
}
三、嵌入式变量
变量名 | 含义 |
---|---|
$proxy_protocol_tlv_aws_vpce_id | 提取 PROXY 协议 TLV 中 AWS VPC Endpoint 的 ID |
$proxy_protocol_tlv_azure_pel_id | 提取 PROXY 协议 TLV 中 Azure Private Endpoint 的 LinkID |
$proxy_protocol_tlv_gcp_conn_id | 提取 PROXY 协议 TLV 中 GCP PSC Connection 的 ID |
这些变量可直接用于 proxy_set_header
、日志记录或其他需要客户端连接上下文的位置。
四、使用建议
-
确保上游服务支持
如果后端业务逻辑需要根据云平台连接元数据做访问控制、审计或路由,请务必在后端服务中解析并验证相应 HTTP 头。 -
安全与合规
云平台 TLV 信息可能包含敏感的网络拓扑标识,尽量只在可信环境或内部网络中透传,避免泄露给未授权的外部方。 -
与 PROXY 协议配合
- 在负载均衡器(如 AWS ALB/CLB、GCP 负载均衡、Azure 负载均衡)上启用 PROXY 协议;
- Nginx
listen … proxy_protocol
后端需配置成接收 PROXY 协议(proxy_protocol
参数); - 并确保防火墙或安全组允许负载均衡器源 IP 伪装的连接。
通过 ngx_http_proxy_protocol_vendor_module
,您可以在 Nginx 层面轻松获取并利用云平台提供的连接元数据,助力细粒度流量管理、审计和多云部署场景。