• ブログTOP
  • AI・ディープラーニング
  • AR
  • VR
  • WEBサイト
  • WEBマーケティング
  • SEO
  • SNS
  • その他
  • お問い合わせ

ALAKI株式会社

COZIKEEいつまでも使えるTech情報発信ブログ

リクルートサイトはこちら >

CLOUD FLARE + WordPress + 共用サーバーでサイトが崩壊したときの処方箋

2016年12月2日

  • このエントリーをはてなブックマークに追加

こんばんは、Webプログラマの篠田です。

2016年も残すところ1ヶ月を切り、街が徐々にクリスマスの様相を呈してきましたね。

本日は、WordPress + 共用サーバー+ CLOUD FLAREで常時SSL化にするための注意点に関してご紹介したいと思います

何も知らずに流行りに乗ると、サイトがひどいことになりますのでご注意下さい。

この記事の目次

  • 1 想定する環境
  • 2 CLOUD FLAREの設定に関して
  • 3 設定を普通にしてしまうとどうなるのか
  • 4 CLOUDFLAREのSSLの仕様
  • 5 WordPressにおけるSSLの仕様
  • 6 WordPressにおけるSSLの仕様の罠
  • 7 解決方法
  • 8 まとめ

想定する環境

■WordPress
こちらのバージョンは「4.6.1(2016.12.02時点での最新)」になります。

■共用サーバー
共用サーバーは、「さくらサーバー」でも「ロリポップ」でも「heteml(ヘテムル)」でもなんでもOKです。
ポイントは独自SSLを契約していないという点です。

■CLOUD FLARE(クラウドフレア)
CDNサービスもいろいろありますが、無料で多くの方が利用しそうな「CLOUD FLARE」を想定します。

CLOUD FLAREの設定に関して

今回はCLOUDFLAREの設定方法は割愛させていただきます。

別の機会に設定方法をまとめたいと思っています。

設定を普通にしてしまうとどうなるのか

CLOUD FLAREを利用して常時SSL化をするというのはGoogle先生の影響もあり多くのサイトで実践されています。
もちろん、WordPressを利用しているサービスもCLOUD FLAREを利用して高速化や常時SSL化を実践されている方もいます。

ですが、それと同時によく目にするのが、今回のお題と同じ「WordPress + CLOUDFLAREでぶっ壊れた」といった嘆きも目にします。

原因は、「WordPress + CLOUDFLARE」ではなく「WordPress + CLOUDFLARE + 共用サーバー」もしくは、「WordPress + CLOUDFLARE + 非SSL環境」が原因で発生している問題です。

CLOUDFLAREのSSLの仕様

まずは、CLOUDFLAREが提供しているSSLの仕様に関して確認しておきたいと思います。

Full

CLOUDFLAREとサーバー、及びクライアント(ユーザー)すべての通信がSSL化される設定です。
セキュリティ的に堅牢で安心して利用できる設定ですが、条件としてサーバー側に自己証明書(通称:オレオレ証明書)でもいいので設定がされていることが条件になります。

Full(static)

これも基本は「Full」と同じで、CLOUDFLAREとサーバー、及びクライアント(ユーザー)すべての通信がSSL化される設定になります。
違いは、サーバー側にあるSSL証明書が外部機関が発行している、ちゃんとしたSSL証明書である必要がある点です。

Flexible

これが本日の本命「Flexible SSL」設定です。
これは通常のSSL証明書と違い、CLOUDFLAREとクライアント(ユーザー)間の通信はSSL化してくれますが、CLOUDFLAREとサーバー間の通信はSSL化されないという特殊な設定になります。

メリットとしては、共用サーバーなどのSSL証明書が設定しづらい環境でも無料でSSL化風にすることができる点があげられます。

デメリットは、本来の意味でのSSL暗号化通信ができないため、完全なセキュア環境でないという点です。
しかし、共用サーバーが提供しているような「共用SSL」を使うぐらいであれば、URLも変わりませんので有効です。
自己証明書を用意できるサーバーであれば迷わず「Full」をご利用下さい。

WordPressにおけるSSLの仕様

CLOUDFLAREがどういう仕様でSSLを提供しているかが分かったところで、WordPress側の仕様に関しても確認しておきましょう。

WordPressでSSLを利用としたときに設定する項目として、管理画面の「設定」→「一般」にある「WordPressアドレス」と「サイトアドレス」のそれぞれの項目を「https://」にすることで常時SSL化を実現することができます。

WordPressは「WordPressアドレス」と「サイトアドレス」に設定されているそれぞれのURLにリダイレクトするよう設定されています。そのため、SSL化後に「http://」と入力しても「https://」に自動的にリダイレクトして表示してくれます。

注意が必要なのはこれが正常に行われるのは、「Full」または「Full(static)」ができるサーバー側でもSSL証明書を設定しているときに限ります。

つまり「Flexible」しか使えない環境下でWordPressを使っている方は、管理画面でURLを変更しただけではSSL化ができないばかりか、サイトが見れない状態になるというわけです。

WordPressにおけるSSLの仕様の罠

「Flexible」とWordPressの組み合わせが悪くなるのには理由があります。

「Flexible」の特徴にもありましたが、CLOUDFLAREとサーバー間でSSL化されていません。

これが原因で、CLOUDFLAREがサーバーと通信するときは「http://」で通信をしようとしますが、WordPressは「https://」にリダイレクトしようとします。
リダイレクトされるとまたCLOUDFLAREがサーバーと「http://」で通信をしようとします。

つまり、恐怖の「無限リダイレクト」に陥りサイトが見れなくなるという現象が発生してしまいます。

こうなってしまうと、管理画面にも入れない、サイトは見れない、WordPressのURLを変更できないという「詰み」状態になります。
※実際はphpMyAdmin等のツールを使って直接データベースに書かれている「WordPressアドレス」と「サイトアドレス」を変更することで復旧させることができます。

解決方法

前フリがだいぶ長くなりましたが、解決方法に関してご紹介したいと思います。

基本はこれからご紹介する「wp-config.php」を変更する方法で対応可能です。
あわててプラグインをインストールしなくても大丈夫です。
※ご紹介の方法でも対応できない場合も、バージョンやサーバー会社の設定によってありますので、ご了承下さいm(_ _)m

「wp-config.php」を開いて、一番上の行に下記を追記してみて下さい。

PHP
1
2
3
4
5
<?php
if( isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && 'https' == $_SERVER['HTTP_X_FORWARDED_PROTO'] ) {
    $_SERVER['HTTPS'] = 1;
    $_SERVER['SERVER_PORT'] = 443;
}

ソースコードの解説

データの通信が「https://」であるかを調べるときにヘッダー情報「HTTP_X_FORWARDED_PROTO」を確認します。
PHPだと「$_SERVER[‘HTTP_X_FORWARDED_PROTO’]」で取得可能です。

この変数の値が「NULL」でなく「https」である場合に行う処理となります。

ただし、「HTTP_X_FORWARDED_PROTO」の値が「SSL」を表していても実際には「http://」でアクセスされているので「$_SERVER[‘HTTPS’]」の値が「off」になっていますので、それを「1」つまり「on」にします。

合わせて利用するポート情報である「$_SERVER[‘SERVER_PORT’]」の値も「80」になっているので「443」にしてSSLで処理してもらうようにお膳立てをします。

これで、何も問題がなければサイトがSSL化されています。

まとめ

CLOUDFLAREは非常に便利ですが特殊な動きをするサービスでもあるので動作を理解していないと罠にかかり、抜け出せなくなる恐れもあります。

是非、CLOUDFLAREとWordPressとうまく付き合ってみてください。

ではではー。

  • ツイート
  • このエントリーをはてなブックマークに追加

You may also like...

  • python-logo-master-v3-TM

    macにpythonの開発環境を作ってみよう!

    1 1月, 2023

  • PAK_PHPS9V9A6862_TP_V

    Laravel5.6で、cron用バッチ処理を作成する方法

    27 9月, 2018

  • alaki-blog20180209_1

    Webサイトチェックツール「QUWASY」が海外対応しました!

    9 2月, 2018

プログラマー募集
  • Next story レスポンシブ広告を活用して、制作・出稿コストを削減&配信機会アップを実現しよう!
  • Previous story Google Analyticsのショートカット機能を使って、分析・レポート作成の時間を短縮しよう!

弊社サービス

MONJI+ MUGHEN ALAKI クラウド型受発注システム さよなら過去のAR。WebARがイベント集客に革命を起こします。

運営会社

ALAKI株式会社 ALAKI株式会社採用サイト

人気の記事

  • alaki1462_A_businessman_who_works_logically_1da80a2e-c297-4911-bdd6-feba0ebf1357

    仕事術

    【書籍要約】数学的な仕事術大全

    4 11月, 2024

  • fv-main-img-min

    空間コンピューティング

    世界初!「空間コンピューティング」を専用端末不要、スマホのWebブラウザのみで実現する『Web XR Site』を公開しました

    22 6月, 2023

  • Virtual reality players isometric vector illustration. VR UI and navigation. Futuristic digital technology. Virtual screen. Mixed reality 3d concept. Person in VR headset. Web banner idea

    AR

    Appleから新世代MRグラス「Vision Pro」の登場 – デジタルと現実世界が融合する新時代へ

    6 6月, 2023

  • AWE

    未分類

    ARアプリ『MUGHEN』が世界最大のAR/VRアワード「AWE」のファイナリストに選出されました!

    26 5月, 2023

  • python-logo-master-v3-TM

    pyhotn / 業務効率化

    「SwinIR」で高画質化した画像を pythonを使用して一括で元のサイズに戻す方法

    2 2月, 2023

カテゴリー

  • AI・ディープラーニング
  • AR
  • BtoB
  • CMS
  • Git
  • Google AdWords
  • gulp
  • Javascript
  • Laravel
  • Photoshop
  • Pug
  • pyhotn
  • Sass
  • SEO
  • SNS
  • Twitter広告
  • VR
  • Web3.0
  • WEBサイト
  • WEBマーケティング
  • YouTube
  • コーディング
  • システム開発
  • スマートフォンサイト
  • セキュリティ
  • セミナー
  • その他
  • ツール
  • デザイン
  • ベトナムレポート
  • 仕事術
  • 未分類
  • 業務効率化
  • 空間コンピューティング
  • 色

アーカイブ

  • 2024年11月
  • 2023年6月
  • 2023年5月
  • 2023年2月
  • 2023年1月
  • 2022年12月
  • 2022年11月
  • 2022年10月
  • 2022年9月
  • 2022年2月
  • 2021年12月
  • 2021年9月
  • 2021年7月
  • 2021年6月
  • 2020年10月
  • 2020年9月
  • 2020年8月
  • 2020年6月
  • 2019年6月
  • 2019年5月
  • 2019年4月
  • 2019年3月
  • 2019年2月
  • 2019年1月
  • 2018年12月
  • 2018年11月
  • 2018年9月
  • 2018年8月
  • 2018年7月
  • 2018年6月
  • 2018年5月
  • 2018年4月
  • 2018年3月
  • 2018年2月
  • 2018年1月
  • 2017年12月
  • 2017年11月
  • 2017年10月
  • 2017年9月
  • 2017年8月
  • 2017年7月
  • 2017年6月
  • 2017年4月
  • 2017年3月
  • 2017年2月
  • 2017年1月
  • 2016年12月
  • 2016年11月
  • 2016年10月
  • 2016年9月
  • 2016年8月
  • 2016年7月
  • 2016年6月
  • 2016年5月
  • 2016年4月
  • 2016年3月
  • 2016年2月
  • 2016年1月
  • 2015年12月
  • 2015年11月
  • 2015年10月
  • 2015年9月
  • 2015年7月
  • 2015年3月
  • 2015年2月
  • 2015年1月
  • 2014年12月
  • 2014年11月
  • 2014年10月
  • 2014年9月
  • 2014年8月
  • 2014年7月
  • 2014年6月
  • 2013年10月
  • 2013年9月

Facebook

お問い合わせ

お問い合わせ

人気の記事

  • 【書籍要約】数学的な仕事術大全
  • 世界初!「空間コンピューティング」を専用端末不要、スマホのWebブラウザのみで実現する『Web XR Site』を公開しました
  • Appleから新世代MRグラス「Vision Pro」の登場 – デジタルと現実世界が融合する新時代へ
  • ARアプリ『MUGHEN』が世界最大のAR/VRアワード「AWE」のファイナリストに選出されました!
  • 「SwinIR」で高画質化した画像を pythonを使用して一括で元のサイズに戻す方法

カテゴリー

  • AI・ディープラーニング
  • AR
  • BtoB
  • CMS
  • Git
  • Google AdWords
  • gulp
  • Javascript
  • Laravel
  • Photoshop
  • Pug
  • pyhotn
  • Sass
  • SEO
  • SNS
  • Twitter広告
  • VR
  • Web3.0
  • WEBサイト
  • WEBマーケティング
  • YouTube
  • コーディング
  • システム開発
  • スマートフォンサイト
  • セキュリティ
  • セミナー
  • その他
  • ツール
  • デザイン
  • ベトナムレポート
  • 仕事術
  • 未分類
  • 業務効率化
  • 空間コンピューティング
  • 色

検索

ALAKI株式会社 © 2025. All Rights Reserved.