web-dev-qa-db-ja.com

IISリバースプロキシを介したIPロギング(Cloudflare)

IISニースの背後にあるサーバー " Cloudflare "リバースプロキシを使用しています。

このリバースプロキシファームは、HTTPヘッダーをサーバーに公開します。つまりHTTP_CF_CONNECTING_IPです。 Cloudflareに接続するIPが含まれているので、実際に誰が接続しているかを確認できます。

もちろん、これらのIPをログに記録したいと思います。 Cloudflareには、IIS REWRITEオプションを使用してweb.configサーバー変数を変更する小さな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>

これは実際にロギングに影響しますか?また、これは、ASP.NETアプリケーションやPHPスクリプトなど、実行時にリクエストIPを確認したときに取得するものに影響しますか?

もしそうなら、なぜこれが存在するのですか: http://devcentral.f5.com/weblogs/Joe/archive/2009/12/23/x-forwarded-for-http-module-for-iis7-source -included.aspx

IIS rewriteを使用できる場合、これにはどのような利点がありますか?

4
sinni800

はい、Cloudflareからのこのweb.config「スクリプト」は、プロキシに接続したクライアント(接続)ユーザーの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)を利用しているようで、意図されています宛先サーバーで使用されます。

あなたがこの質問をしてからしばらく経ちましたが、あなたがすでに答え/解決策に到達していても、この答えは他の人を助けるかもしれないと思いました。

2
brettbaggott