zoukankan      html  css  js  c++  java
  • 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:

    1. 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.
    2. From the Home page, double-click Logging.
    3. From the Log File section, click Select Fields.
    4. From the bottom left corner, click Add Field.
    5. 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
    6. From the Actions pane on the right, click Apply to implement the change.
    7. The log files are located by default in the directory %SystemDrive%inetpublogsLogFiles. 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:

    1. 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.
    2. From the Home page, under IIS, double-click Advanced Logging.
    3. From the Actions pane on the right, click Enable Advanced Logging.
    4. From the Actions pane on the right, click Edit Logging Fields.
    5. 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
    6. From the Actions pane on the right, click Add Log Definition.
    7. Enter Client Source IP in the Base file name field.
    8. Click Select Fields.
      • Check (enable) the ClientSourceIP field created earlier
    9. Click OK on the Select Logging Fields form, then click Apply in the actions pane.
    10. Click Return To Advanced Logging in the actions pane.
    11. Run iisreset /restart to apply the new settings.
    12. 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.

    1. Download the zipped archive from here and extract to an appropriate folder.
    2. Navigate to the relevant version (32- or 64-bit).
    3. Copy F5XForwardedFor.dll to a suitable location on your server, e.g. C:ISAPIfilters.
    4. Make sure you have ISAPI Filters enabled on your IIS server.
    5. Open IIS Manager, right-click the site and select Properties.
    6. Select the ISAPI Filters tab.
    7. Click add, then in the popup enter a suitable name and select the DLL file stored in step 3.
    8. Restart your website.

    后记

    关于IIS日志分析,这里再推荐个工具HttpLogBrowser(传送门),基本上大部分的统计需求都可以满足,实在是居家旅行之必备。

    补充

    其实还有个方法,可以直接在IIS日志里输出,就是使用F5XForwardedFor,注册完成后重启IIS,就会在日志里直接输出(传送门),我试了也是可行的,但不知道是不是官方方案,生产没敢搞。

  • 相关阅读:
    Objective-C 资源收藏
    坑爹的高德地图API
    nginx的location root alias指令以及区别
    Java Swing 界面中文乱码问题解决(Idea环境)
    不同的国家/地区与语言缩写代码
    IDEA编译时出现 Information:java: javacTask: 源发行版 1.8 需要目标发行版 1.8
    请重视!请重视!请重视!百度熊掌号之搜索资源平台体验
    php7带来的性能升级
    详解Asp.Net Core 2.1+的视图缓存(响应缓存)
    Xshell5 提示要继续使用此程序,您必须应用最新的更新或使用新版本
  • 原文地址:https://www.cnblogs.com/krockey/p/11263707.html
Copyright © 2011-2022 走看看