CloudFlare で Flexible SSL を設定後に行うべき設定集

公開日:2018/06/02  最終更新日:2019/12/30  カテゴリー:サービス紹介

本記事では CloudFlare の Flexible SSL を設定した後に行う必要のある設定のうち、
通常のSSLとは違う特殊な設定が必要なものについて紹介していきます。
CloudFlare での Flexible SSL の設定がまだの人は
こちらの記事を参考に済ませておいてください。

1. SERVER変数を書き換える

1.1. $_SERVER['HTTPS'] の書き換え

Flexible SSLの場合、SSLでアクセスしているのは Cloudflare までで、
Cloudflare からサーバーには HTTPでアクセスしています。
ですから サーバー(プログラム)側は SSLでアクセスしていても
そうとはわからずに SSLに転送しようとして 無限ループが発生してしまいます。

それを防ぐために 次の記述をシステムが最初に読み込むファイルに
追加する必要があります。
例えば WordPress であれば wp-config.php に追記してください。
(編集が必要なのはここまでです ! より上への追記をお勧めします。)

if ( ! empty( $_SERVER['HTTP_X_FORWARDED_PROTO'] ) && $_SERVER['HTTP_X_FORWARDED_PROTO'] == 'https' ) {
	$_SERVER['HTTPS']='on';
}

1.2. $_SERVER['REMOTE_ADDR'] の書き換え

CloudFlare の Flexible SSL を使用するとPHPで取得したIPアドレスが全て CloudFlare のものになってしまいます。
これを防ぐために次のコードを追記しましょう。

if (isset($_SERVER['HTTP_CF_CONNECTING_IP'])) {
	$_SERVER['REMOTE_ADDR'] = $_SERVER['HTTP_CF_CONNECTING_IP'];
}

2. 301リダイレクトの設定

2種類の方法を紹介しますので どちらかを設定してください。
最初に紹介する方法が サーバーへの負担なども少なくお勧めです。

2.1. Cloudflare で設定する方法(推奨)

タブ「Crypt」内の 「Always Use HTTPS」を ONにするだけです。

2.2. .htaccess で設定する方法

次の記述を .htaccess に追記します。

RewriteCond %{HTTP:X-Forwarded-Proto} =http 
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

3. 通常通りSSL化

ここまでの設定が完了したら 通常通り SSL化に必要な作業を行ってください。
WordPress であれば サイトアドレスの設定を変更したり、
記事内の 画像のパスやリンクを SSLに変更したりする必要があります。

4. 参考文献

本サイトでは URLに日本語を含んでいます。
メールなどで共有する場合は リンクとして認識されない場合がございますので、こちらをご利用ください。