我正在使用良好的“ Cloudflare ”反向代理背后的IIS服务器。
此反向代理服务器场向我的服务器公开一个HTTP头,即HTTP_CF_CONNECTING_IP 。 它包含连接到Cloudflare的IP,所以我可以看到谁在连接。
现在我当然想logging这些IP。 Cloudflare有一个小小的web.config脚本,它使用IIS REWRITE选项来更改REMOTE_ADDR服务器variables。
<rules> <clear /> <rule name="Replace REMOTE_ADDR with CF_CONNECTING_IP" enabled="true"> <match url="(.*)" /> <conditions logicalGrouping="MatchAll" trackAllCaptures="false"> <add input="{HTTP_CF_CONNECTING_IP}" pattern="\b(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\b" /> </conditions> <serverVariables> <set name="REMOTE_ADDR" value="{HTTP_CF_Connecting_IP}" /> </serverVariables> <action type="None" /> </rule> </rules>
这实际上是否影响日志? 另外:这是否影响我在运行时查看请求IP时获得的内容,例如,ASP.NET应用程序或PHP脚本?
如果是这样,为什么存在: http : //devcentral.f5.com/weblogs/Joe/archive/2009/12/23/x-forwarded-for-http-module-for-iis7-source-included.aspx
当我们只能使用IIS重写时,这个好处是让我得到了什么?
是的,Cloudflare中的web.config“脚本”通过捕获连接到代理的客户端(连接)用户的IP地址并通过服务器variablesREMOTE_ADDR将其传递到目标服务器来影响日志logging。 否则,您会看到代理服务器的IP地址作为请求的IP地址。
我认为这将适用于ASP.NET应用程序,但不适用于PHP应用程序。 对于那些我想你会需要的东西沿线:
http://drupal.org/project/cloudflare (虽然我意识到这是Drupal的具体,它基本上是你列出的ASP.NET方式的PHP版本)
F5解决scheme存在的原因是在代理服务器端处理这个问题。 这里列出的ASP.NET解决scheme和为Drupal列出的PHP解决scheme都似乎在利用CloudFlare正在转发的值(HTTP_CF_Connecting_IP),并且打算在目标服务器上使用它。
我意识到自从你问这个问题已经有一段时间了,但是我想这个答案可能会帮助其他人,即使你已经得到答案/解决scheme。