今回は「nginxのサーバーキャッシュの設定方法」です。
サーバーキャッシュは
自分のサーバー構成です。(ここの)
キャッシュがない場合
クライアントからのアクセス
↓ ↑
WEBサーバー(nginxリバースプロキシ)
↓ ↑
WEBサーバー(apache)
↓ ↑
PHP-FPM
↓ ↑
DB(mariadb)
なのですが、これだと毎回バックエンドのapacheにアクセスがくるのでリソース不足になりページの表示速度がかなり落ちます。
そのためキャッシュを配信をしていれば毎回apacheにアクセスしなくてもよいため、ページが非常に速くなります。
キャッシュがある場合
クライアントからのアクセス
↓
nginx
↓
apache キャッシュ
1,apacheのキャッシュモジュールを無効にする
これをしないとキャッシュが配信されなかったりキャッシュの有効期限切れとなりキャッシュが配信されないです。そのため無効にします。
vim /etc/httpd/conf.modules.d/00-base.conf
で開き
LoadModule cache_module modules/mod_cache.so
LoadModule cache_disk_module modules/mod_cache_disk.so
LoadModule cache_socache_module modules/mod_cache_socache.so
LoadModule expires_module modules/mod_expires.so
から
#LoadModule cache_module modules/mod_cache.so
#LoadModule cache_disk_module modules/mod_cache_disk.so
#LoadModule cache_socache_module modules/mod_cache_socache.so
#LoadModule expires_module modules/mod_expires.so
に#を入れてください。
apacheを再起動してください。
2,nginxのキャッシュ設定
次はnginxです。少しめんどくさいです
vim /etc/nginx/nginx.conf
で開き
proxy_cache_path /var/cache/nginx/cache levels=2:2 keys_zone=cache_key:10m max_size=5g inactive=30m;
を入れてください。
「levels=2:2 keys_zone=cache_key:10m max_size=5g inactive=30m;」の辺はぐぐってください。
vim /etc/nginx/conf.d/*.conf
*はドメイン名やいろんな文字?をかくことができるため*にしています。
で開き
proxy_no_cache $do_not_cache;
proxy_cache_bypass $do_not_cache;
proxy_ignore_headers Cache-Control;
proxy_cache cache_key;
proxy_cache_valid 200 302 60m;
proxy_cache_valid 404 10m;
add_header X-Cache-Status $upstream_cache_status;
set $do_not_cache 0;
set $keys_zone worklog;
if ($request_uri ~* '/(wp-admin/|wp-login.php|wp-cron.php|xmlrpc.php|\??feed|wp-json|sitemap.xml)') {
set $do_not_cache 1;
}
if ($request_method != GET) {
set $do_not_cache 1;
}
if ($http_cookie ~* 'comment_author|wordpress_[a-f0-9]+|wp-postpass|wordpress_no_cache|wordpress_logged_in') {
set $do_not_cache 1;
}
を追加してください。
if ($request_method != GET)
はGET以外はキャッシュしない?です。
「$request_uri ~* ‘/(wp-admin/|wp-login.php|wp-cron.php|xmlrpc.php|\??feed|wp-json|sitemap.xml)」「ttp_cookie ~* ‘comment_author|wordpress_[a-f0-9]+|wp-postpass|wordpress_no_cache|wordpress_logged_in」
を追加していないとワードプレスをログイン中でもログインした状態でキャッシュしてそのキャッシュを配信されてやばいことになります。乗っ取りとか
nginxを再起動してください。
nginxのキャッシュの状態を見る
x-cache-statusがmissの場合はキャッシュは配信されていません。
x-cache-statusがhitの場合はキャッシュが配信されています。
x-cache-statusがBYPASSの場合はキャッシュは配信されていません。
nginxのキャッシュの設定はめんどくさいですが表示時間が速くなるならやったほうがいいですね。
最後まで読んでくれてありがとうございました。
コメントを残す