お知らせ:お問い合わせにZendesk Support を導入しました

Cloudflare で訪問者IPを簡単に取得する方法|WordPress高速化とAdSense対策

Cloudflare で訪問者IPを簡単に取得する方法|AdSense対策

この記事は 7 分で読めます
この記事は以下のような方に書いています
  • AdSenseをWordPressに導入すると、どうしても表示スピードが遅くなってしまう、、、
  • ちょっとでもWordPressの表示速度改善をしたいので、CloudflareのCDNってどうなの?
  • 実際、Cloudflareを使って収益が下がったという人もいるし
  • 興味はあるけど導入しようか迷っている…

この記事を読むことで

Cloudflare(クラウドフレア) を導入しつつも、訪問者IPも取得できAdSenseにも影響なくWordPressの速度改善を検証した結果と、具体的な解決方法がわかります。

この記事を書いた人

やくしじん

  • ビズスター株式会社代表
  • 地域ビジネスや中小企業のデジタルマーケティング支援をしています。
  • デジタルマーケティングや中小企業のWeb活用の効率化も模索中
  • 海外で当たり前になっている便利なサービスを日本の地域ビジネス領域の企業に導入サポート

などをしています。最近はWordPressの高速表示化やMixhostなどLiteSpeedサーバーのことを色々研究しています。

WordPress高速化2019版!ということで、WordPress高速化のTipsを色々とご紹介していますが、1つ問題が発生しました。

Cloudflare のCDNを利用するとAdSense の収益が激減する?

という問題です。

結果から言うと、解決策が見つかりましたので今回の記事にしてシェアしたいと思います。

原因はCloudflareの「リバースプロキシ」

なぜCloudflareは訪問者IPをCloudflareのIPに書き換えるのか?

こたえ
  • Cloudflareキャッシュ機能のためにCloudflareのIPアドレスに書き換えているよ
  • リバースプロキシっていうんだよ
  • キャッシュ機能の関係でリバースプロキシを通知するようにしてるんだけど
  • 訪問者の元IPも取得できるよ
  • Cloudflareの機能で「True-Client-IP Header」って機能があるんだ
  • その機能を使ってくれれば、Cloudflareから訪問者元IPを通知するよ
  • サクっとEnterpriseプランに変更したらその機能が使えるようになるよ
  • その機能を使わず取得する方法もあるよ
  • 訪問者のIP情報自体は全部のプランで送ってるからサーバー側で受け取るようにもできるよ
Enterpriseプランにするか、もしくはサーバー側を設定変更すれば訪問者IPも取得できるってことか。
おお!なんかいけそうな気がする!

Cloudflare のCDNを利用すると、Cloudflare のプロキシサーバーを経由するアクセスが増えますが、その際にCloudflare側で訪問者のIPアドレスをCloudflareのプロキシサーバーに書き換えているようです。

その理由については、Cloudflare のCDNキャッシュ機能のためと説明されています。

参考 Why do my server logs show Cloudflare's IPs using Cloudflare?Cloudflare Support

リバースプロキシを使っているので、訪問者の元のIPアドレスも、サーバー側で処理してもらえればちゃんと受取可能ですよ。ということらしいです。

ただ、Enterpriseプランにすれば、Cloudflare側も訪問者の元IPを送るというサービスも用意しているようですね。

Cloudflare 管理画面の中のNetworkの項目の中にTrue-Client-IP Headerという機能がそれにあたります。

Cloudflare 管理画面の中のNetworkの項目の中にTrue-Client-IP Headerという機能がそれにあたります。

上記画像の項目がそうですね。その中のHELPにも訪問者元IPを取得する方法なども解説してくれています。

で、Upgrade to ENTERPRISE のボタンをクリックすると…

Cloudflareエンタープライズプラン

やくしじん

値段書いて無し!問い合わせてねって書いてありますね。

内容を見ると「24時間7曜日365日メールも電話もサポート付き!」という記述があるので、これは完全に企業レベルで活用する場合のプランのようですね。

小規模なサイトの場合は、手動で対応するのが良さそうです。


ということで、Enterpriseプランを使わず、フリープランのままでなんとかいけそうな気がするので、頑張ってみました。

ちなみに。

AdSenseの収益に影響はあるのか

リバースプロキシによる訪問者の元のIP情報が取得できないとなると、AdSenseの収益にも影響が出そうですよね。

この問題は、Cloudflareの公式Communityにも同様の質問があり、以下のような回答があります。

参考 Does Cloudflare impact Google AdSense?Cloudflare Support

このやりとりの回答内容をざっくり解説すると。

基本的にはCloudflare の設定に関してGoogleAdSenseには全く影響ありません。

ただし!!!
念のため、mod_cloudflare でオリジナルの訪問者のIPアドレスを返すように設定しておくことをオススメします。

「全く影響はありません、でも念のため・・・」って、、、
どっちやねん!
って、感じの回答。

結局、元IPアドレスは返すようにしといてねと言ってる位なので、そうしといた方が良いね、って感じですね。

やくしじん

実際にAdSenseの収益が半減した!という人も

Googleで「Cloudflare AdSense 収益」と検索すると

  • 収益が減ることは無いよ!
  • 半減した

と、正反対の検索結果がそれぞれ1位、2位に来ています。

Googleで「Cloudflare AdSense 収益」と検索すると

どちらの記事も大変参考にさせて頂きました。

結果的には「対策しておいた方が良さそうだな」という結論に至ったため、実際に私が実施した2つの設定方法をご紹介します。

Cloudflareで訪問者IPアドレスを取得する方法は2つ

実際に私が検証した2つの方法をそれぞれご紹介します。いずれの方法でも、

  • 正常に訪問者IPアドレスが取得できた
  • AdSense収益には影響でない状態を確認した

という所まで検証しています。

リバースプロキシの元IPを参照する方法と聞くと、専門知識が必要そうなイメージですが、実際には1つプラグインを入れて終わりです。

もう1つの方法は、プラグインを使わない方法をご紹介しますが、こちらはちょっと上級者向き。

それでは、Cloudflare 訪問者の元IPを取得する方法を2つご紹介します。

  1. IP GEO BLOCK プラグインを導入して HTTP_X_FORWARDED_FOR を取得する方法(簡単)
  2. wp-config.php HTTP_X_FORWARDED_FOR を直接記述する方法(上級者向き)

を、それぞれ解説しますね。

1.IP GEO BLOCK プラグインを導入して HTTP_X_FORWARDED_FOR を取得する方法(簡単)

1-1 IP GEO BLOCKのインストール

こちらのプラグインをインストールします。
1.IP GEO BLOCK プラグインを導入して HTTP_X_FORWARDED_FOR を取得する方法(簡単)

WordPressプラグインページはこちら
IP Geo Block:https://ja.wordpress.org/plugins/ip-geo-block/

1-2 IP GEO BLOCKの基本的な設定

インストール後、必要な項目を設定していきます。変更が必要な箇所のみ解説します。
※クリックして拡大できます。
1-2 IP GEO BLOCKの基本的な設定

1-2-1 検証ルールと振る舞いの設定

番号1(必須):IPアドレスを追加抽出する の項目に以下の文字を入力しましょう。

HTTP_X_FORWARDED_FOR

この記述が訪問者IPを取得するための記述です。この設定ができれば本来の目的は達成です。簡単です。

その他、セキュリティ面で、やっておいた方が良い設定を続いて解説していきますね。(元々セキュリティ対策のプラグインですし)

1-2-2 バックエンドの設定

番号2(推奨):XML-RPC 国コードで遮断に選択 にチェック。
これは、セキュリティ的に海外からの不要なログインアタックを防いでくれますので、チェックしておくと良いですね。

1-2-3 プライバシーと記録の設定

番号3(任意):ここで囲っているチェックは全て外す

  • IPアドレスを匿名化する
    平常時は匿名化でOKですが、今回の設定の確認のために訪問者のIPアドレスを確認する目的で外します。確認がとれればチェックを入れてもらってOKです。
  • 外部APIへの送信を制限する
    これも同じ理由です。後述しますが、GEOデータでマッピングされたデータが確認できますので、確認のために。
  • IPアドレスをキャッシュに記憶
    キャッシュは外しました。今回Cloudflareでキャッシュを利用するのと、LiteSpeedでもキャシュ機能があるので、IPアドレスのキャッシュ機能はトラブルになりそうなので外しました。
    この設定は永続的にこのままにします。

番号4(任意):検証の統計を記録を有効にチェック
必須ではありませんが、統計が見られるので有効にしました。

1-2-4 位置情報APIの設定

番号5(推奨):APIの選択とキーの設定
別途APIが必要なもの以外は全てチェックしました。国コードが取得できるので、セキュリティ的にはチェックしておいたら良いです。全てチェックする必要は無いと思います。

1-2-5 プラグインの設定

番号6(任意):GoogleMaps APIキー
入れておかなくてもOKです。入れられるものは入れたい。入れられるものなら入れておきたい。私がGoogle Map APIキーを入れた理由はただそれだけです。

以上が  IP GEO BLOCK によるリバースプロキシの訪問者元IPアドレスを取得する方法でした。

続いて上級者編を解説します。

2.wp-config.php にHTTP_X_FORWARDED_FOR を直接記述する方法(上級者向き)

プラグインを使わずに訪問者のIPアドレスを取得する方法です。プラグインを使いたくないという方向けですがマジで注意が必要です。

注意
この方法は、バックアップなどを取って、失敗しても大丈夫な状態で作業しましょう。
この説明だけで具体的なやり方がわからない人は、素直に IP GEO BLOCK を使ってください。
私も検証中に、アクセスユーザーのIPアドレスをechoで表示させちゃったり、画面が真っ白になっちゃったりと、色々危険です。

検索すると他にも色々と方法があったのですが、コマンドでライブラリをサーバーにインストールする方法とかはさすがにハードルが高かったので、現実的に実施できる方法として、wp-config.phpに HTTP_X_FORWARDED_FOR を記述し、参照元IPを取得する方法として検証してみました。

2-1wp-config.php に HTTP_X_FORWARDED_FOR を記述

Mixhost LiteSpeed 環境
今回の検証は

  • MixhostのLiteSpeedサーバー
  • LiteSpeed Cache プラグインを利用
  • Cloudflare CDNを連携

という環境での検証です。他のサーバー会社で同様にできるか不明ですが、wp-config.htaccess が変更できる環境であれば問題なく設定できるでしょう。

WordPressがインストールされているディレクトリのwp-config.php に以下の記述を記載します。

if(isset($_SERVER['HTTP_X_FORWARDED_FOR'])) {
$list = explode(',',$_SERVER['HTTP_X_FORWARDED_FOR']);
$_SERVER['REMOTE_ADDR'] = $list[0];
}

WordPressがインストールされているディレクトリのwp-config.php に以下の記述を記載します。
こんな感じです。

2-2 .htaccess に %{X-Forwarded-For}i を記述

先ほどの wp-config.php に記述した内容を処理するために、.htaccess に以下の内容を記述します。

%{X-Forwarded-For}i

2-2 .htaccess に %{X-Forwarded-For}i を記述

当方は、Apache完全互換のLiteSpeedサーバー(Mixhost)なので、LiteSpeed Cacheプラグインの設定から.htaccess を追記しました。

FTPソフト等でサーバーにアップされている.htaccess を直接編集しても良いですし、サーバー管理画面などの管理コンソールなどがあればそこから編集してもらってもOKです。

これで完了です。

訪問者の元IPが取得できているか確認しよう

設定前と設定後、IPアドレスがどのようになっているか確認してみましょう。

今回の設定前の状態の訪問者IPアドレス

これは、私の au のスマートフォンからアクセスした場合の、訪問者元IPを取得できるように設定する前の状態です。

IPアドレスも162〜 からはじまるIPとなり、Organization がCloudflare.inc になっていますよね。

完全にCloudflare のプロキシにIPが変更されているのがわかります。
※クリックして拡大できます。
回の設定前の状態の訪問者IPアドレス

今回の設定後の状態の訪問者IPアドレス

続いて、今回の設定後、同じau端末からアクセスした場合のIPアドレスは。

きちんと訪問者の元IPアドレスが取得されていて、ネットワークの情報などもauのものになっていました。
※クリックして拡大できます。
今回の設定後の状態の訪問者IPアドレス

これで、Cloudflare CDNを利用した上で、訪問者元IPアドレスの取得は問題なく解決できました。

やくしじん

ちなみに、IPアドレスの確認にもIP GEO BLOCK のプラグインから確認しています。
私はIP GEO BLOCK 方式で今後も続けていきます。本当に良いプラグインですね。

開発者の方に感謝です。マジオススメ。しかも重くならないのが良いです。

セキュリティ面でも絶大な効果があるので今後も利用させて頂きます。

AdSense収益にも全く影響無し

  • Cloudflare(クラウドフレア) CDN利用しない
  • Cloudflare(クラウドフレア) CDN利用+今回の設定を反映した場合

いずれの状態でも収益に全く差異がなかったことを確認しました。

AdSenseの方でもIPアドレスを正常に取得できるのではと思っています。
※規約違反になるのでAdSense側のキャプチャはNGですが、、、

当方のAdSenseのアカウントの収益は全然小さい状況なので、あくまで私のケースではという前置きが入りますが、この対策の前後による差異はなかったと実感できたので、Cloudflare CDNとAdSenseを併用して今後も数値をチェックしていきたいと思っています。

もし、この方法で収益に影響が出たという方がいらっしゃれば、教えて頂ければ幸いでございます。

もうCloudflare CDNとAdSense併用は怖がらなくていい!

もうCloudflare CDNとAdSense併用は怖がらなくていい!

Cloudflare(クラウドフレア) の情報やLiteSpeedサーバーの情報、AdSenseとCloudflareの活用方法などは、まだ日本国内にはWeb上の情報が少なくて手探り状態ですが、今回の記事でAdSenseとCloudflare CDNによる高速化の併用は問題ないと検証できました。

CDNによるWordPressの高速化に興味があるけど、AdSenseの収益に影響が出るのが怖いから試せない、という方の参考になれば幸いです。

恐らく、大手の企業さんでCloudflareをあたりまえに活用されているような方にとっては、当たり前のお話なのかもしれませんが、非エンジニアクラスタな人間にとっては、情報が少なく色々な情報を調べながら今回の記事の内容に落ち着きました。

海外の新しい便利なサービスを弊社でどんどん実践しながら情報発信をつづけ、日本の地域ビジネス、ローカルビジネス、スモールビジネス領域のデジタルマーケティングのノウハウとして、どんどんお客様へ還元できるようチャレンジしていきます。

WordPressの高速化の設定も、今回のCloudflareの導入とAdSenseの併用のバランスを取る中で、また全体的な設定が変わりましたので、近いうちに全設定の内容を各記事にアップデートしていきたいと思います。
(一通り更新しました。2019/06/25 追記)

記事に使用しているGoogleロゴやCloudflareサービスのロゴ、WordPressのロゴ等の著作権は各企業に属します。

今回参考にした記事など

Cloudflare Support
Why do my server logs show Cloudflare’s IPs using Cloudflare?
Does Cloudflare impact Google AdSense?
How do I restore original visitor IP with a LiteSpeed server?
How does Cloudflare handle HTTP Request headers?

その他参考記事
WordPressとReverseProxyを用いて接続元を正しく表示する方法
Cloudflareを導入したら、Google AdSenseが半減した話をしよう

今回紹介したプラグイン関連
IP GEO BLOCK

当方の環境
Mixhost ミックスホスト
Cloudflare

Cloudflareってなに?って方はこちら
簡単無料:MixhostサーバーならCloudflareでWordPress高速最適化【5分でCDN入門】

WordPress高速化に関する関連記事一覧
Cloudflare で訪問者IPを簡単に取得する方法|AdSense対策Cloudflare で訪問者IPを簡単に取得する方法|WordPress高速化とAdSense対策Cloudflare を利用するとメールの送受信ができない場合の対処法Cloudflare を利用するとメールの送受信ができない場合の対処法WordPress高速化2019年版:たった1つのプラグインとCDNで最速WordPress高速化2019年版:たった1つのプラグインとCDNで簡単最速化簡単無料:MixhostサーバーならCloudflareでWordPress高速最適化【5分でCDN入門】SANGOテーマ + Mixhost で最速表示の最適解を見つけましたMixhost + LiteSpeed Cache + CloudflareCDNで最速の設定を全画像付で解説【SANGO爆速】爆速街道:WordPress + Mixhostで表示速度を高速化簡単チューニングワードプレスオススメ爆速サーバーを紹介しますWordPress高速化:Web制作者がクライアントに教えたがらない最速サーバーを教えます

コメントを残す

メールアドレスが公開されることはありません。