CDNトラブルシュート(アクセスログ)


CDNを導入すると、ユーザからのアクセスは、すべてCDNサーバにより処理されます。そのため、オリジンサーバのログによるアクセス解析は、基本的に意味のないものになります(ごく一部のリクエストしか解析できなくなる)。

タグ埋め込み型解析

タグ埋め込み形の解析ルーツはCDN利用の有無を問わず(CDN利用していない場合と同様に)利用できます。代表的なものには以下があります:

  • Google Analytics
  • Marketo

Google Analyticsがもっとも有名ですが、問題点として「アクセス元IPアドレスを取得できない」点があります。

オリジンサーバへのリクエストフォワード

オリジンサーバにリクエストを届けたい場合には、以下のようなキャッシュ制御を行うことにより、全リクエストがオリジンサーバに届くようになります:

  • CDN設定(コンソール)
    • TTLを0に設定
  • オリジンサーバ設定(HTTPヘッダ)
    • Cache-Control: no-cache
      • キャッシュされなくなる
    • Cache-Control: must-revalidate
      • キャッシュを利用するが、リクエスト舞に最新確認をオリジンサーバに行う

これらの設定によりオリジンサーバにリクエストが届くようになりますが、そのアクセスは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のみ等)であることが多い
  • ログ提供までの時間:時間がかかる(数時間~数日)ことが多い