• 公開日: 2024-12-07
  • 最終更新日:

Cloudflareでアクセス元のIPを取得する方法(WordPress)

汎用的なOGPもしくはアイキャッチ画像

スポンサーさん

はじめに

※本記事はWordPress向けです。
使用サーバー: さくらのレンタルサーバー スタンダード

Cloudflareを使っていると、リバースプロキシ(Cloudflare)経由のIPアドレスになって、
特定のIPからのログインを遮断したりする時等に、困っていませんか?。

実はCloudflareにはリバースプロキシを経由したクライアントのIPアドレスをオリジンに送り、
クライアントのIPを取得できるHTTPヘッダがあるのは知っていましたか?

wp-config.phpに数行の記載をするだけで、簡単にこの問題を解決できるので今回はそれを解説していきたいと思います。

CloudflareのIPになっているコメント

やり方

今回はこのGitHubに転がってた有能な人が作ったコードをベースとして使おうと思います。

// CF-Connecting-IPを使い、実際のクライアントのIPを取得する
// これは適当な位置で大丈夫です。推奨としては、「注意:」と書いてある下辺りです。
// それなら確実に動作します。(私の環境で確認済み)

if ( isset( $_SERVER['HTTP_CF_CONNECTING_IP'] ) ) {
	$http_x_headers = explode( ',', $_SERVER['HTTP_CF_CONNECTING_IP'] );

	$_SERVER['REMOTE_ADDR'] = $http_x_headers[0];
}

このコードの意味(簡易的)は、まずは CF-Connecting-IP ヘッダが存在するか確認して、
このHTTPヘッダが存在した場合、WordPressが認識する $_SERVER['REMOTE_ADDR']を、
CF-Connecting-IPの中身でオーバーライド(上書き)するということです。

確認

うまくできていたら、このように実際にクライントのIPが表示されます。
ちなみに、もちろんCloudflareのIPではなく、これはJ:COMのIPアドレスです。

CloudflareでクライアントのIPを取得

まとめ

wp-config.phpに数行記載し、CloudflareのHTTPヘッダで、クライアントのIPが取得できます。

IPアドレスに基づいて、ログインロックをするプラグインなどがあるので、クライアントのIPを取得するのは、
非常に重要なセキュリティ対策だと思います。

wp-config.phpはWordPressのコアファイル(核となっているファイル)なので、
必ずバックアップを取ってから作業をしてください。

スポンサーさん

よかったらグッドボタン&シェアお願いします!

送信したコメントは承認作業を行うまで表示されません。ご了承ください。
なお名前の入力は任意でメールアドレスの入力も必要ありません。 CAPTCHA(画像認証)の文字が表示されない場合は再リロードしてください。


記事の削除依頼や修正依頼については、問い合わせにて受け付けております。
ぜひお気軽に問い合わせください。

筆者のプロフィール

profile-img

名前: Otusoaオツソア (本名: 小林 栄太)

主に1年半ぐらい趣味でWebサイトを作っています。
このブログは痒い所に手が届くニッチな技術を提供します。
当サイトでは、自分の好きなようなことをマイペースに発信していきます。
※私は謎の備忘録おじさんではなく、謎の備忘録お兄さんです

Contact