天天看点

iis 6、7、8或更高版本,解决 nginx、f5 负载均衡后 wwwlogs 日志中不能记录 X-Forwarded-For 真实ip 问题

 iis 6、7、8或更高版本,解决 nginx、f5 负载均衡后 wwwlogs 日志中不能记录 X-Forwarded-For 真实ip 问题

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-clickLogging.
  3. From the Log File section, clickSelect Fields.
  4. From the bottom left corner, clickAdd Field.
  5. In the Add Custom Field window, complete the following:
  • inField Name, typeX-Forwarded-For
  • inSource, typeX-Forwarded-For
  • leaveSource Typeset to ‘Request Header’
  • clickOKon the Add Custom Field window
  • clickOKon the W3C Logging Fields window
  1. From the Actions pane on the right, clickApplyto implement the change.
  2. 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

Advanced Logging 下载地址:​​http://www.microsoft.com/en-gb/download/details.aspx?id=7211​​

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-clickAdvanced Logging.
  3. From the Actions pane on the right, clickEnable Advanced Logging.
  4. From the Actions pane on the right, clickEdit Logging Fields.
  5. On theEdit Logging Fieldswindow clickAdd Field,and then complete the following:
  • inField ID, typeClientSourceIP
  • inCategory,type *Default *
  • inSource type, select Request Header
  • inSource name, typeX-Forwarded-For
  • clickOKon the Add Logging Field form
  • clickOKon the Edit Logging Fields form
  1. From the Actions pane on the right, clickAdd Log Definition.
  2. EnterClient Source IPin theBase file namefield.
  3. ClickSelect Fields.
  • Check (enable) the ClientSourceIP field created earlier
  1. ClickOKon the Select Logging Fields form, then clickApplyin the actions pane.
  2. ClickReturn To Advanced Loggingin the actions pane.
  3. Runiisreset /restartto apply the new settings.
  4. 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 clickView Log Files.

IIS 6

iis6 没有官方的支持

f5 封装的 dll 可以使用,​​http://downloads.loadbalancer.org/F5isapifilter/F5XForwardedFor.zip​​

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. Clickadd, then in the popup enter a suitable name and select the DLL file stored in step 3.
  8. Restart your website.

Problem solved - for IIS 7 and above, you should see an additional column named X-Forwarded-For which contains the IP addresses of client PC’s. For IIS 6 the IP address of the load balancer should be replaced with the IP address of client PC’s.

Found in

继续阅读