您可以通过设置应用型负载均衡ALB的监听服务保留客户端的真实源IP地址。
背景信息
在您创建监听时,X-Forwarded-For
头字段可以获取来访者客户端IP地址。
字段格式:
X-Forwarded-For: <client-ip-address>, <proxy1>, <proxy2>, …
当使用此方式获取客户端真实IP时,获取的第一个地址就是客户端真实IP。
ALB默认开启X-Forwarded-For
头字段。目前ALB仅支持通过调用API来关闭X-Forwarded-For
头字段,您可以通过调用 UpdateListenerAttribute接口,将XForwardedForEnabled取值为false来关闭X-Forwarded-For
头字段。
配置IIS7或IIS8服务器
- 下载并解压F5XForwardedFor文件。
- 根据自己的服务器操作系统版本将x86\或x64\目录下的F5XFFHttpModule.dll和F5XFFHttpModule.ini拷贝到某个目录,例如C:\F5XForwardedFor.dll\。确保IIS进程对该目录有读取权限。
- 打开IIS管理器,双击模块功能。
- 单击配置本机模块,然后在弹出的对话框中,单击注册。
- 添加下载的.dll文件。
- 输入文件名称,选择路径之后,单击确定。
- 此时系统会自动选中新注册的模块,请单击确定。
- 输入文件名称,选择路径之后,单击确定。
- 为添加的两个文件授权允许运行ISAPI和CGI扩展程序。 说明 确保您已经安装了ISAPI和CGI应用程序。
- 重启IIS服务器,等待配置生效。
配置Apache服务器
本文以在alidata/目录下配置为例,执行命令的时候,请以实际路径为准。
- 登录后端服务器,执行以下命令,安装Apache的一个第三方模块mod_rpaf。
sudo wget https://github.com/gnif/mod_rpaf/archive/v0.6.0.tar.gz sudo tar zxvf v0.6.0.tar.gz sudo apt-get install apache2-dev sudo whereis apxs2 sudo cd mod_rpaf-0.6.0 /alidata/server/httpd/bin/apxs -i -c -n mod_rpaf-2.0.so mod_rpaf-2.0.c
- 修改Apache的配置文件/alidata/server/httpd/conf/httpd.conf,在最末尾添加以下配置信息。
LoadModule rpaf_module modules/mod_rpaf-2.0.so RPAFenable On RPAFsethostname On RPAFproxy_ips <IP_address> RPAFheader X-Forwarded-For
说明 如果您要获取代理服务器的地址,可以将代理服务器的网段添加到RPAFproxy_ips <IP_address>
,如负载均衡的IP地址段100.64.0.0/10(100.64.0.0/10是阿里云保留地址,其他用户无法分配到该网段内,不会存在安全风险)和高防IP地址段。多个IP地址段用半角逗号(,)分隔。 - 添加完成后重启Apache。
sudo /alidata/server/httpd/bin/apachectl restart