nginxにはキャッシュ機能としてプロキシキャッシュとFastCGIキャッシュがある。
fastcgi_cache_pathとfastcgi_cache_keyは、httpディレクティブに記述
http { fastcgi_cache_path /tmpfs/cache-zone levels=1:2 keys_zone=cache-zone:30m max_size=512M inactive=600m; fastcgi_cache_key "$scheme$request_method$host$request_uri"; . . . .
fastcgi_cache_path | /tmpfs/cache-zone | キャッシュの保存先。バーチャルホスト毎に異なるパスを指定 |
---|---|---|
levels | 1:2 | キャッシュの構造レベルを指定 |
keys_zone | testdom:30m | ゾーン名とキャッシュキー管理用のメモリサイズ。 ゾーン名はバーチャルホスト毎に指定します。 ここではメモリサイズとしては30MBを保持するように設定 |
max_size | 512M | キャッシュの最大サイズ。このサイズを超えると利用されていないものから削除されていく |
inactive | 600m | この時間アクセスが無いキャッシュを削除 |
こちらはlocationディレクティブに記述
location ~ \.php$ { fastcgi_read_timeout 300; fastcgi_pass unix:/opt/bitnami/php/var/run/www.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $request_filename; include fastcgi_params; ### 以下の設定を追加 ### set $do_not_cache 0; # -- POST or HEAD ? if ($request_method != "GET") { set $do_not_cache 1; } # -- Login or Comment or Post Editting ? if ($http_cookie ~ ^.*(comment_author_|wordpress_logged_in|wp-postpass_).*$) { set $do_not_cache 1; } fastcgi_cache cache-zone; fastcgi_cache_valid 200 60m; add_header X-F-Cache $upstream_cache_status; }
$do_not_cache | 0 1 | キャッシュ時の条件記述。 $do_not_cache=0の時はキャッシュしない。 上記の条件は、GET以外はキャッシュしない。cookie条件:コメント中、記事作成中、ログイン中の場合はキャッシュしない。 |
---|---|---|
fastcgi_cache_valid | 200 60m | HTTPステータス毎にキャッシュの有効期限を設定。 ここではHTTPステータス:200は60分でキャッシュの有効期限が切れる |
add_header X-F-Cache | $upstream_cache_status | ヘッダーX-F-Cache にキャッシュの状態を表示。HITとかMISSとか表示される |
「X-F-Cache」で確認できる。
設定の下記部分
add_header X-F-Cache $upstream_cache_status;
# curl -D - -s -o /dev/null http://localhost/info.php HTTP/1.1 200 OK Server: nginx/1.18.0 Date: Sat, 01 May 2021 13:52:56 GMT Content-Type: text/html; charset=UTF-8 Transfer-Encoding: chunked Connection: keep-alive X-Powered-By: PHP/7.4.15 X-F-Cache: MISS
# curl -D - -s -o /dev/null http://localhost/info.php HTTP/1.1 200 OK Server: nginx/1.18.0 Date: Sat, 01 May 2021 13:52:58 GMT Content-Type: text/html; charset=UTF-8 Transfer-Encoding: chunked Connection: keep-alive X-Powered-By: PHP/7.4.15 X-F-Cache: HIT