热门排行
简介
当HTTP请求中包含 X-Forwarded-For 的header, 这个值会被策略替换为一个单独的客户端IP地址。如果没有 X-Forwarded header, 将添加这个header并且加入客户端IP地址值。
F5 iRules:
when HTTP_REQUEST {
if {[HTTP::header exists X-Forwarded-For]}{
HTTP::header replace X-Forwarded-For "[HTTP::header X-Forwarded-For], [IP::
client_addr]"
} else {
HTTP::header insert X-Forwarded-For [IP::client_addr]
}
}
NetScaler :
add rewrite action xforward replace HTTP.REQ.HEADER("X-Forwarded-For") CLIENT.IP.SRC
add rewrite policy xforward_check_pol "HTTP.REQ.HEADER(\"X-FORWARDEDFOR\").EXISTS"
add rewrite action xforward_add insert_http_header X-FORWARDED-FOR CLIENT.IP.SRC
add rewrite policy xforward_add_pol "HTTP.REQ.HEADER(\"X-FORWARDEDFOR\").EXISTS.NOT"
xforward_add
全局或者在 vServer 级别绑定
F5负载均衡获取客户端真实IP
1.在F5上配置X-Forwarded-For
2.获取ip时使用如下代码:
String ip = getRequest().getHeader("X-Forwarded-For");
if (ip == null || ip.length() == 0 ) {
ip = getRequest().getRemoteAddr();
}
使用方法
下载并解压 F5XForwardedFor文件。
根据自己的服务器操作系统版本将x86\Release或者 x64\Release目录下的 F5XFFHttpModule.dll 和 F5XFFHttpModule.ini拷贝到某个目录,比如 C:\F5XForwardedFor\。确保IIS进程对该目录有读取权限。
打开IIS管理器,双击模块功能。
单击配置本机模块,然后在弹出的对话框中,单击注册。
添加下载的.dll文件(最好x64和x86都添加好)
为添加的两个文件授权允许运行ISAPI和CGI扩展。
返回主页后,重启IIS:
去%SystemDrive%\inetpub\logs\LogFiles查询IIS日志,可以看到日志里边已经有相关原始IP信息了