wordpressのレスポンスをnginxでキャッシュする設定を追加してみました。
基本的には、このサイト(【nginx】【超高速】 WordPress のウェブサーバーを nginx にして、プロキシキャッシュを使ってパフォーマンスをとても向上させるまでの試行錯誤です!【Apache からの卒業】)の記述を参考にしています。
また、以下の説明は、前回のこの記事の設定が終わっていることを前提とします。
まず、前回はWordPress Codexの記述を元に設定しているわけですが、その中の「Per Site configuration」で作成した設定ファイルに以下の記述を追加します。追加位置に意味があるかはわからないけど、意味的には既存の設定の上に追加した方がいいと思います。
# Redirect everything to the main site. proxy_cache_path /var/cache/nginx/cache1 levels=1 keys_zone=cache1:128m; proxy_cache cache1; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-Host $host; proxy_set_header X-Forwarded-Server $host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_cache_valid 200 404 30m; server { listen 80 default_server; location ~* \.(js|css|png|jpg|jpeg|gif|ico)$ { log_not_found off; proxy_pass http://unix:/var/run/nginx.sock; } set $do_not_cache 0; if ($uri ~* "\.php$") { set $do_not_cache 1; } if ($request_method = POST) { set $do_not_cache 1; } set $proxy_cache_key "$scheme://$host$request_uri"; if ($http_cookie ~ "(wordpress_logged_in_|comment_author_)(.*)") { set $proxy_cache_key "$2::$proxy_cache_key"; } location / { proxy_no_cache $do_not_cache; proxy_cache_bypass $do_not_cache; proxy_cache_key $proxy_cache_key; proxy_pass http://unix:/var/run/nginx.sock; } }
で、もともとは、
listen 80 default_server;
としていた箇所をコメントアウトして、
listen unix:/var/run/nginx.sock;
とします。
最初に追加した設定箇所で、キャッシュからレスポンスするかどうかを決めて、キャッシュがなかったらUNIXソケット(unix:/var/run/nginx.sock)経由でwordpressのphp経由でレスポンスするような設定ですね。ざっくり言うと。
webページにアクセス後、/var/cache/nginx/cache1のファイルを参照してみると、更新日時が変わっていくので、キャッシュが効いているものと思われます。
今度はキャッシュの有無がどのくらいパフォーマンスに効いてくるかを計測してみようと思います。参考にしたサイトにもありますが、https://gtmetrix.comがわりとつかえそうです。