前回までの記事でCentOS7にphp7・nginxを導入し、wordpressを扱う方法までをご紹介しました。
今回はそのnginxの代名詞でもある超高速化のproxy cacheについてご紹介します。

wordpress + php7 + nginx ( proxy cache ) で他のライバルサイトと差別化する高速化サイトを実現できます。
*インフラ環境で速度に変化がありますのでそこはご了承ください。

proxy cacheを使うことでwordpressで高速化のためにsuper cacheやw3 total cacheなどを使わずとも安定して速度の向上が見込めます。
検索ランキングの上位表示を狙うためのSEOでもサイトのスピードは重要だとの見解が出ていますので趣味のサイトからビジネスサイトまで幅広く活躍できると思います。

またレンタルサーバでは、ほとんどが汎用性が高くシェア数も一番のApacheを使っているところが多いので、自宅サーバやVPSを扱うメリットともなります。

nginxにproxy cacheを導入

proxy cacheとは

キャッシュと呼ばれる静的な一時ファイルを生成し表示させることで動的な処理が少なくなり、速度の向上、CPUの負荷減少へと貢献する技術です。
今までは80番ポートのフロントエンドサーバでphpやDBなどの処理をさせていましたが、8080番ポートのバックエンドサーバを追加します。

キャッシュが存在すれば80番ポートで受け入れキャッシュを表示し、なければ8080番ポートで処理してキャッシュを作成するような流れです。

proxy cacheでは、何日間キャッシュを保持するか、キャッシュ出来る最大容量、メモリをどれくらい使うのかなど設定できます。
今回は私が使っている設定でご紹介します。おそらく一般的な設定であると思います。

キャッシュ用のディレクトリを作成

キャッシュファイルを保存するディレクトリを作成します。キャッシュが作成されるとこのディレクトリにキャッシュファイルが溜まっていきます。

nginxのconfファイルに設定追加

nginxの設定ファイルにproxy cacheの設定を記述します。

設定内容は以下のようになります。

このようにhttpの中に記述します。
各要素の意味は以下の通りです。
*levels=1 キャッシュを作成する階層を1階層にする。
*keys_zone=cache_hogehoge:4m キャッシュゾーンという名前の指定とそれを格納するために使用するメモリの量を指定。
*inactive=7d 7日間アクセスのないキャッシュを削除する。
*max_size=50m 保存できるキャッシュの量は50MBまで。

hogehoge.com.confの設定

ドメインごとに指定しているconfファイルの設定にproxy cacheの設定を追加します。

このファイルを以下の通りに書き換える。

ここではwordpressを扱うことを前提として記述しているので、/wordpress/wp-admin/と/wordpress/wp-login.phpはキャッシュさせないように設定しています。
ディレクトリ名やバックエンドサーバ名、キャッシュゾーンの名前は各自のものに書き換えてください。

設定ファイルを保存し、systemctl restart nginxでnginxを再起動させれば設定が反映されます。
proxy cacheがうまく作動すれば、ライバルサイトとの差別化も出来るかと思います。

SEO関連では、圧縮の有効やキャッシュの有効期限を指定するのも大事なのでnginxのそれらの設定も次回以降でご紹介します。
.htaccessは使えませんが設定ファイルに追加することでそれらも指定することは可能です。
そこまで出来ればきっとnginxの魅力に気付くと思います。

また、一度キャッシュしてしまうとキャッシュが存在する場合はキャッシュページを表示してしまうので、phpやcssを編集したときにはすぐに反映されないこともあります。
そんなときはキャッシュを保存する用に作成したディレクトリの中身を消しちゃいましょう!

rm -rf /var/cache/nginx/cache/hogehoge/*

アスタリスクのワイルドカードでhogehoge以下のファイルを全て削除します。
キャッシュが存在しなければ、表示されたときに新しくまたキャッシュが作成されます。

wordpressのプラグインで編集されたときだけキャッシュを削除するものがあるようなのですが、個人的にはこちらのほうが勝手が良い気がします。
今回、紹介した方法なら複数のドメインが利用されていてもそれぞれの対応したディレクトリにキャッシュが溜まるので、ほかのドメインへの影響もなく安心です。

この設定がうまく出来ないと逆に遅くなるなんてこともあるので、GTmetrixなどで設定前と比べて高速化できているかのチェックは忘れずにすることをおすすめします。
またwordpressのキャッシュ系のプラグインとの相性は良くないのでnginxでproxy cacheを使うときはキャッシュ系のプラグインははずしておきましょう。