CDNを導入すると、ユーザからのアクセスは、すべてCDNサーバにより処理されます。そのため、オリジンサーバのログによるアクセス解析は、基本的に意味のないものになります(ごく一部のリクエストしか解析できなくなる)。
タグ埋め込み型解析
タグ埋め込み形の解析ルーツはCDN利用の有無を問わず(CDN利用していない場合と同様に)利用できます。代表的なものには以下があります:
- Google Analytics
- Marketo
Google Analyticsがもっとも有名ですが、問題点として「アクセス元IPアドレスを取得できない」点があります。
オリジンサーバへのリクエストフォワード
オリジンサーバにリクエストを届けたい場合には、以下のようなキャッシュ制御を行うことにより、全リクエストがオリジンサーバに届くようになります:
- CDN設定(コンソール)
- TTLを0に設定
- オリジンサーバ設定(HTTPヘッダ)
- Cache-Control: no-cache
- キャッシュされなくなる
- Cache-Control: must-revalidate
- キャッシュを利用するが、リクエスト舞に最新確認をオリジンサーバに行う
- Cache-Control: no-cache
これらの設定によりオリジンサーバにリクエストが届くようになりますが、そのアクセスはCDNサーバからのものになります。そのため、そのままアクセス解析を行っても本当のクライアント情報(IPアドレス)を得る事はできません。
多くのCDNは、元のクライアントのIPアドレスを、以下のようなHTTPヘッダに含めており、これらを使うことにより解析を行うことができます:
- x-forwarded-for
Apacheの場合、以下のような設定になります(この設定の場合、アクセス元IPの情報が消えます。セキュリティ対策としては通常のcommonログも同時に取得することをお勧めします):
- LogFormat “%{X-forwarded-For}i %l %u %t \”%r\” %>s %b \”%{Referer}i\” \”%{User-Agent}i\”” combined2
生ログ
CDNによっては、CDNサーバのログを取得できる場合があります。ただし、以下のような制限があります:
- ログタイプ:固定(commonのみ等)であることが多い
- ログ提供までの時間:時間がかかる(数時間~数日)ことが多い