全球加速 GA
全球加速 GA
本文导读
链接复制成功!
GA获取客户端源IP
应用场景
客户端源IP指的是访问者(用户设备)的IP地址,全球加速 GA(Global Accelerator)支持获取客户端源IP功能,后端服务器可以通过该功能获取发起访问的客户端源IP。
本文为您介绍在不同场景中后端服务器如何获取客户端源IP。
约束与限制
根据监听协议的不同,全球加速支持的获取客户端源IP情况也不同:
- UDP:不支持获取客户端源IP。
- TCP:根据终端节点类型不同,需要后端服务器做相应适配以获取客户端源IP。
关于适配说明,请参见下表:
终端节点类型
获取客户端源IP
后端服务器适配
说明
ECS
支持
不需要(后端服务收到报文的源IP就是客户端源IP)
- 默认情况下,GA服务使用TOA协议将客户端源IP传递给后端服务器,客户需要在后端服务器上配置TOA插件才能获取客户端源IP。
详细请参见TOA插件配置
- 对于开启了Proxy Protocol功能的加速器,GA服务使用 Proxy Protocol协议将客户端源IP传递给后端服务器,客户需要在后端服务器上开启Proxy Protocol功能。
EIP
需要
ELB
自定义IP
自定义域名
自定义EIP
- 默认情况下,GA服务使用TOA协议将客户端源IP传递给后端服务器,客户需要在后端服务器上配置TOA插件才能获取客户端源IP。
通过Proxy Protocol协议获取客户端源IP
本节以终端节点类型为EIP,后端服务使用Nginx为例,介绍如何开启Proxy Protocol功能,并查看已获取的客户端源IP。
- 提交工单,开启Proxy Protocol功能。
- 在后端服务器上开启Proxy Protocol功能。
Nginx的http{}和stream{}模块均可以接收Proxy Protocol,在http{}模块或stream{}模块中添加相应处理Proxy Protocol的端口。
http { #... server { listen 8080 proxy_protocol; #在8080端口,开启解析proxy protocol。 #... } } stream { #... server { listen 8090 proxy_protocol; #在8090端口,开启解析proxy protocol。 #... } }
- 获取客户端源IP。
开启Proxy Protocol后,Nginx会将客户端源IP保存在变量proxy_protocol_addr中,可以将其保存在日志中。
http { #... log_format main '[$time_local] $proxy_protocol_addr : $proxy_protocol_port $host "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"'; } stream { #... log_format main '[$time_local] $proxy_protocol_addr : $proxy_protocol_port $host "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"'; }
- 查看日志,获取客户端源IP。