我的最终目标是在IIS日志文件中查看客户端的外部IP地址,以便进行报告/故障排除。
我们在Elastic Load Balancer后面的EC2实例上运行WCF应用程序。我在IIS中安装了F5 ISAPI DLL。负载均衡器设置为使用HTTPS(443)转发到HTTPS(443)。 ELB上托管有效证书,IIS上有自签名证书。
在这种情况下,如果我访问https://mysite/test.html等页面,IIS日志将包含外部IP地址。但是当我访问https://mysite/wcfapplication/test.aspx时,IIS日志包含ELB的内部IP地址。
亚马逊称这是该应用程序的一个问题。该团队在确定WCF配置中要更改的内容时遇到问题。有没有人遇到过这种情况并找到了修复/解决方法?
答案 0 :(得分:3)
原因在于,当您使用Load Balancer时,它会传递数据,并且请求的IP地址将变为负载均衡器的IP地址。用户的实际IP地址记录在“x-forwarded-for”服务器变量中。
在IIS中,您需要使用第三方ISAPI过滤器来记录该值,当它在请求中找到时,这将使事情有效。
有一些,这是由guy from F5创建的 - 或者来自Microsoft IIS team的成员。