获取真实客户端IP
使用全站加速后,获取客户端真实IP的方法会略有不同,我们会将客户端的真实IP通过HTTP请求头传递给源站。您可以通过特定的HTTP请求头来获取IP信息。
域名未改动过相关配置的情况下,默认会以x-forwarded-for的请求头来传递真实客户端IP。您也可以自定义该头部名称。
配置说明
您如果需要修改全站加速传递客户端真实ip的头部,可以提交工单,联系天翼云技术支持操作。
源站配置
如果您需要修改源站获取客户端真实ip的头部为x-forwarded-for,可以参考以下列举的几个服务器端获取真实ip的场景。
Nginx场景
打开nginx.conf配置文件,在log_format的日志配置中添加$http_x_forwarded_for,将真实客户端IP记录到日志中。
eg:
log_format main '$http_x_forwarded_for - $remote_user [$time_local] '
'"$request" $status $body_bytes_sent "$http_referer" '
'"$http_user_agent"';
Tomcat场景
可以设置server.xml文件,添加Connector中的RemoteIpValve字段。
useForwardedHeaders="true":设置tomcat使用请求头字段来获取IP。
remoteIpHeader:根据您全站加速侧设置,指定对应的头部获取IP。
eg:
<Connector port="****" protocol="HTTP/1.1"
connectionTimeout="****"
……
useForwardedHeaders="true"
remoteIpHeader="X-Forwarded-For"
…… />
Apache场景
- 如果源站部署的Apache服务器为2.2及以下版本,可通过运行命令安装Apache的第三方模块mod_rpaf,并修改http.conf文件获取客户IP地址的头部。
eg:
LoadModule rpaf_module modules/mod_rpaf-2.0.so ####加载mod_rpaf模块
<IfModule mod_rpaf.c>
RPAFenable On
RPAFsethostname On
RPAFproxy_ips 127.0.0.1 <反向代理IPs>
RPAFheader X-Forwarded-For
</IfModule>
- 修改Apache的配置文件http.conf文件获取客户IP地址相关配置日志字段LogFormat,可将LogFormat中%a(远程IP地址),替换成%{X-Forwarded-For}i
eg:
LogFormat "%{X-Forwarded-For}i %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
IIS场景
如果您的源站部署的是IIS 6服务器,您可以通过安装“F5XForwardedFor.dll”插件,并做配置从而让IIS 6服务器记录的访问日志获取客户端真实的IP地址。
- 下载F5XForwardedFor模块。
- 根据您服务器的操作系统版本将“x86\Release”或者“x64\Release”目录中的“F5XForwardedFor.dll”文件拷贝至指定目录(例如,“C:\ISAPIFilters、C:\ISAPIFilters\x86、C:\ISAPIFilters\x64”),务必确保IIS进程对该目录有读取权限。
- 打开IIS管理器,找到当前开启的网站,在该网站上右键选择“属性”,打开“属性”页面。
- 在“属性”页面,切换至“ISAPI筛选器”,单击“添加”,在弹出的窗口中,配置如下信息:
- “筛选器名称”:“F5XForwardedFor”。
- “可执行文件”:“F5XForwardedFor.dll”的完整路径,例如:“C:\ISAPIFilters\F5XForwardedFor.dll、C:\ISAPIFilters\x86\F5XForwardedFor.dll、C:\ISAPIFilters\x64\F5XForwardedFor.dll”。
- 单击“确定”。
- 重启IIS 6服务器。重启完成后,IIS 6服务器记录的访问日志中的客户端ip就是X-Forwarded-For传递的对应的客户端真实IP。
如果您的源站部署的是IIS 7服务器,您可以通过安装“F5XForwardedFor”模块,并做配置从而让IIS 7服务器记录的访问日志获取客户端真实的IP地址。
- 下载F5XForwardedFor模块。
- 根据您服务器的操作系统版本将“x86\Release”或者“x64\Release”目录中的“F5XFFHttpModule.dll”和“F5XFFHttpModule.ini”文件拷贝至指定目录(例如,“C:\ISAPIFilters、C:\ISAPIFilters\x86、C:\ISAPIFilters\x64”),务必确保IIS进程对该目录有读取权限。
- 在IIS服务器的选择项中,双击“模块”,进入“模块”界面。
- 单击“配置本机模块”,在弹出的对话框中,单击“注册”。
- 弹出的对话框中填入:(名称可以自己取,路径取决于步骤二文件存放的路径)。举例如下:
- 第一种:名称:x_forwarded_for。路径:“C:\ISAPIFilters\F5XFFHttpModule.dll”。
- 第二种:名称:x_forwarded_for_x86。路径:“C:\ISAPIFilters\x86\F5XFFHttpModule.dll”。
- 第三种:名称:x_forwarded_for_x64。路径:“C:\ISAPIFilters\x64\F5XFFHttpModule.dll”。
- 注册完成后,勾选新注册的模块(“x_forwarded_for_x86”或“x_forwarded_for_x64”)并单击“确定”。
- 在“ISAPI和CGI限制”中,按操作系统添加已注册的DLL文件,并将其“限制”改为“允许”。
- 重启IIS 7服务器。重启完成后,IIS 7服务器记录的访问日志中的客户端ip就是X-Forwarded-For传递的对应的客户端真实IP。