Назад | Перейти на главную страницу

IIS IP Logging через обратный прокси (Cloudflare)

Я использую сервер 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), и предназначены для использования на целевом сервере.

Я понимаю, что прошло некоторое время с тех пор, как вы задали этот вопрос, но я подумал, что этот ответ может помочь другим, даже если вы уже пришли к ответу / решению.