Я использую сервер IIS за красивым "Cloudflare"обратный прокси.
Эта обратная прокси-ферма предоставляет моему серверу HTTP-заголовок, а именно HTTP_CF_CONNECTING_IP
. Он содержит IP-адрес, который подключается к Cloudflare, поэтому я могу видеть, кто подключается.
Теперь я, конечно, хочу записать эти IP-адреса. Cloudflare имеет немного web.config
сценарий, использующий параметр IIS REWRITE для изменения REMOTE_ADDR
серверная переменная.
<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, какие преимущества дает мне ЭТО?
Да, этот «скрипт» web.config от Cloudflare влияет на ведение журнала, фиксируя IP-адрес клиента (подключающегося) пользователя, подключенного к прокси, и доставляет его на целевой сервер через серверную переменную REMOTE_ADDR. В противном случае вы увидите IP-адрес прокси-сервера как запрашивающий IP-адрес.
Я думаю, что это будет работать с приложениями ASP.NET, но НЕ будет работать с приложениями PHP. Для тех, кто, я думаю, вам понадобится что-то вроде:
http://drupal.org/project/cloudflare (хотя я понимаю, что это специфично для Drupal, это в основном PHP-версия ASP.NET, как вы указали)
Причина, по которой существует решение F5, состоит в том, чтобы справиться с этим на стороне прокси-сервера. И решение ASP.NET, указанное здесь, и решение PHP, указанное для Drupal, похоже, используют значение, которое передает CloudFlare (HTTP_CF_Connecting_IP), и предназначены для использования на целевом сервере.
Я понимаю, что прошло некоторое время с тех пор, как вы задали этот вопрос, но я подумал, что этот ответ может помочь другим, даже если вы уже пришли к ответу / решению.