IIS日志如何记录X-Forwarded-For
起因
最近因为某个站点的流量异常,需要统计一下服务器的来源IP,本来开一下IIS日志就能搞定的事儿,但不幸的是生产服务器使用F5做了负载均衡,IIS日志无法记录到真实IP,真实的IP在“x-forwarded-for”中,baidu了一堆,没几个靠谱的,还好有个bing能用,很快找到了下这篇文章,文章写的条理清晰,浅显易懂,立马转了过来,省的什么时候又给墙了,大家看原文吧,我懒得翻译了。
原文:http://www.loadbalancer.org/blog/iis-and-x-forwarded-for-header/
What's the issue?
When you load balance your website at layer 7, it will become non-transparent. This means that the actual client source IP address is replaced by the load balancer's own IP address - and only this address will be recorded in the IIS logs.
One way around this is to insert XFF headers on the load balancer to track the actual client source IP address. IIS can then be reconfigured to make this data available in the logs.
NB. The other options to gain source IP transparency are to configure the load balancer in layer 4 NAT mode, layer 4 DSR mode or Layer 7 with TPROXY enabled.
The solution - how to modify logging behaviour
The steps required depend on your version of IIS.
IIS 8.5 & later
A custom logging field can be added to record XFF headers.
To enable this feature:
- Start IIS Manager, then on the Connections pane on the left, click the appropriate website where you want to enable XFF logging. The Home page is then displayed in the main panel.
- From the Home page, double-click Logging.

- From the Log File section, click Select Fields.

- From the bottom left corner, click Add Field.

- In the Add Custom Field window, complete the following:
- in Field Name, type X-Forwarded-For
- in Source, type X-Forwarded-For
- leave Source Type set to ‘Request Header’
- click OK on the Add Custom Field window
- click OK on the W3C Logging Fields window
- From the Actions pane on the right, click Apply to implement the change.

- The log files are located by default in the directory %SystemDrive%\inetpub\logs\LogFiles. IIS creates new log files and appends “_x” to the log file names to indicate that they contain custom fields.
UIIS 7 & IIS 7.5
For IIS 7 & 7.5 the Advanced Logging add-on must be installed. This can be downloaded here. Once installed on the IIS server, you'll see an extra option called 'Advanced Logging' in IIS.
To configure and enable Advanced Logging:
- Start IIS Manager, then on the Connections pane on the left, click the server, website or directory where you want to configure Advanced Logging. The related Home page is displayed in the main panel.
- From the Home page, under IIS, double-click Advanced Logging.

- From the Actions pane on the right, click Enable Advanced Logging.

- From the Actions pane on the right, click Edit Logging Fields.

- On the Edit Logging Fields window click Add Field, and then complete the following:
- in Field ID, type ClientSourceIP
- in Category, type Default
- in Source type, select Request Header
- in Source name, type X-Forwarded-For
- click OK on the Add Logging Field form
- click OK on the Edit Logging Fields form
- From the Actions pane on the right, click Add Log Definition.

- Enter Client Source IP in the Base file name field.

- Click Select Fields.
- Check (enable) the ClientSourceIP field created earlier
- Click OK on the Select Logging Fields form, then click Apply in the actions pane.
- Click Return To Advanced Logging in the actions pane.
- Run iisreset /restart to apply the new settings.
- The advanced log must be viewed rather than the default log. The advanced log is located in %SystemDrive%inetpublogsAdvancedLogs. To view the logs, right-click the Client Source IP log definition and click View Log Files.

IIS 6
Unfortunately, the Microsoft solution mentioned above is not available for IIS 6. Luckily there are a number of other solutions - some costing money and others that have been released as open source. One excellent example that we've tested with our products is F5's X-Forwarded-For ISAPI filter. It's available in both in 32- and 64-bit versions.
- Download the zipped archive from here and extract to an appropriate folder.
- Navigate to the relevant version (32- or 64-bit).
- Copy F5XForwardedFor.dll to a suitable location on your server, e.g. C:ISAPIfilters.
- Make sure you have ISAPI Filters enabled on your IIS server.
- Open IIS Manager, right-click the site and select Properties.
- Select the ISAPI Filters tab.
- Click add, then in the popup enter a suitable name and select the DLL file stored in step 3.
- Restart your website.
后记
关于IIS日志分析,这里再推荐个工具HttpLogBrowser(传送门),基本上大部分的统计需求都可以满足,实在是居家旅行之必备。
补充
其实还有个方法,可以直接在IIS日志里输出,就是使用F5XForwardedFor,注册完成后重启IIS,就会在日志里直接输出(传送门),我试了也是可行的,但不知道是不是官方方案,生产没敢搞。
IIS日志如何记录X-Forwarded-For的更多相关文章
- IIS日志-网站运维的好帮手
对于一个需要长期维护的网站来说,如何让网站长久稳定运行是件很有意义的事情. 有些在开发阶段没有暴露的问题很有可能就在运维阶段出现了,这也是很正常的. 还有些时候,我们希望不断地优化网站,让网站更快速的 ...
- 网站运维工具使用iis日志分析工具分析iis日志(iis日志的配置)
我们只能通过各种系统日志来分析网站的运行状况,对于部署在IIS上的网站来说,IIS日志提供了最有价值的信息,我们可以通过它来分析网站的响应情况,来判断网站是否有性能问题,或者存在哪些需要改进的地方 对 ...
- 【转】IIS日志-网站运维的好帮手
对于一个需要长期维护的网站来说,如何让网站长久稳定运行是件很有意义的事情. 有些在开发阶段没有暴露的问题很有可能就在运维阶段出现了,这也是很正常的. 还有些时候,我们希望不断地优化网站,让网站更快速的 ...
- X-Forwarded-For (IIS日志记录用户真实IP)
参考:http://www.jbxue.com/article/7521.html 当IIS放在反向代理后面时,日志中的客户端ip是反向代理服务器的ip,不是用户的真实IP地址. 本文为大家介绍使用X ...
- [转]IIS 日志记录时间和实际时间 不一样
今天偶然发现 2003 系统IIS 日志记录时间和实际时间总是差了8个小时,也就是慢了8个小时.苦苦找了半天才发现如下办法能解决 ,特发来分享下 解决1:如果 IIS日志记录默认使用的是W3C扩展日志 ...
- Apache/Nginx/IIS日志记录的各个字段内容与含义
一.Apache 1.1 Apache日志文件名称及路径介绍 当我们安装并启动Apache后,Apache会自动生成两个日志文件,这两个日志文件分别是访问日志access_log(在Windows上是 ...
- iis日志查看
IIS日志是每个服务器管理者都必须学会查看的,服务器的一些状况和访问IP的来源都会记录在IIS日志中,所以IIS日志对每个服务器管理者非常的重要,seoer也不例外,这点同时也可方便网站管理人员查看网 ...
- 云计算之路-阿里云上:结合IIS日志分析“黑色30秒”问题
在昨天针对“黑色30秒”问题的分析中,我们猜测Requests Queued上升是由于正在处理的请求出不去(到达不了客户端).今天我们结合IIS日志验证这个猜测. IIS日志中有一个重要的指标——ti ...
- 【一步一图】:详解IIS日志配置
打开网站配置:右键点击属性 弹出设置界面 如上图,日志可选4种格式: [Microsoft IIS 日志文件格式] 存放地址如上图 以in开头 年份后两位+月份+日 命名: 示例: //, ...
随机推荐
- 使用DataV制作实时销售数据可视化大屏(实验篇)
课时1:背景介绍 任务说明 ABC是一家销售公司,其客户可以通过网站下单订购该公司经营范围内的商品,并使用信用卡.银行卡.转账等方式付费.付费成功后,ABC公司会根据客户地址依据就近原则选择自己的货仓 ...
- git配置密钥(私钥、ssh、公钥)
参照: https://blog.csdn.net/weixin_42063071/article/details/80999690 经常帮人配置git的私钥,来总结一下简单的流程真心希望对大家有所帮 ...
- 测开之路四十一:常用的jquery函数
jQuery选择器菜鸟教程:https://www.runoob.com/jquery/jquery-selectors.html 引用jquery2.1.1标签:<script src=&qu ...
- 测开之路二十三:python常用模块
os模块 sys模块 hashlib shutil对文件和目录进行操作 random和随机相关 json
- mybatis Invalid bound statement (not found)错误解决办法
由于新版的IntelliJ IDEA不再编译source folder下的xml文件,而我们平时使用mybatis时,习惯于将*Mapper.xml文件放在与dao层.service层平级的src目录 ...
- 面试题40:最小(大)的K个数
剑指offer40题,同时这也是面试高发题目 2019.4 蚂蚁金服问道:求1000万个数据中的前K个数. 思路: 1.直接上排序算法,然后我们就取排好顺序的前K个即可.但是单考虑快排,时间复杂度也要 ...
- P3375 【模板】KMP字符串匹配——kmp算法
先上一波题目 https://www.luogu.org/problem/P3375 kmp模板 看了好久才想起来是个什么东西qwq #include<cstdio> #include&l ...
- 调用js方法返回值为undefined
问题描述: 我写的js方法: function getname(code){ var name $.post("",{ code:code },function(resurlt){ ...
- Alpha版本——展示博客【第二组】
成员简介 章豪 http://cnblogs.com/roar/ 角色: PM,后端 个人介绍: 努力学习开发的小菜鸡,管理小白,背锅组长 贡献: - 设计开发计划 - 跟踪项目进行 - 组织开组会 ...
- php yield关键字以及协程的实现
php的yield是在php5.5版本就出来了,而在初级php界却很少有人提起,我就说说个人对php yield的理解 Iterator接口 在php中,除了数组,对象可以被foreach遍历之外,还 ...