IIS日志文件和负载均衡器?

twl*_*hty 9 windows logging iis-6 windows-server-2003

我们将ASP.NET应用程序托管在两个位于硬件负载平衡器后面的Web服务器(Server 2003,IIS 6)上.当我查看IIS日志时,IIS(v6)日志中的c-ip值始终是负载均衡器的IP地址.我注意到在http标头中,有一个X-Forwarded-For标头似乎有请求的IP地址.我可以做些什么来使IIS在日志中记录此标头值吗?

Oli*_*ver 5

我不知道它的运营时间有多久,但高级日志扩展IIS 7及以上(Windows Server 2008和高达上)提供了自定义日志记录功能,可用于收集(几乎)任意信息在IIS日志文件,其中包括自定义HTTP请求(和响应)标头,如X-Forwarded-For.

我今天刚刚在我们的服务器上设置它,它的工作非常好.

需要注意的一点是:不是通过名称%COMPUTERNAME%-Server编辑默认的日志定义,而是在您的站点上创建一个新的或在服务器上全局创建一个新的日志定义,以避免异常"请求不受支持".在尝试保存更改时.当您尝试在站点级别编辑该默认定义时会发生这种情况(感谢此线程的答案).


u07*_*7ch 3

当您通过代理时,x-forwarded-for 是负载均衡器最常用的。您可能可以编写一个httpfilter来自行交换它;或者IIS Tracer能够处理标准文件;包括交换 c-ip 和 x-forwarded 字段。

如果这样做不是为了使用第三方报告工具;您可能希望将日志转储到 SQL Server 中,以便您可以随时操作这些列。

就我个人而言,我选择后者,这样我就可以获得所有服务器的聚合数据;我转储到同一个数据库中的不同表中,然后从场中的所有 Web 服务器进行报告。我还发现它比管理各处 500mb 左右的日志文件更容易。