nginxのキャッシュ保存先を複数設定する
nginxでキャッシュ設定を行う際にlocationによってキャッシュサイズやinactiveの条件を変えたかったので方法を調べてみた。
今までnginxを使う時はproxy_cache_pathは一つしか設定していなかったけど、実は複数設定ができた。
↓のようにproxy_cache_pathを複数定義して、proxy_cacheを切り替えれば、細かくキャッシュ条件を設定することが可能。
http {
proxy_cache_path /var/cache/nginx/proxy_cache_type_a levels=1:2 keys_zone=cache_type_a:10m max_size=1000m inactive=24h;
proxy_cache_path /var/cache/nginx/proxy_cache_type_b levels=1:2 keys_zone=cache_type_b:10m max_size=1000m inactive=30m;
upstream app {
server 127.0.0.1:3000;
}
server {
listen 80;
root /var/www/app/public;
location /type_a/ {
try_files $uri @type_a;
}
location /type_b/ {
try_files $uri @type_b;
}
location @type_a {
proxy_pass http://app;
proxy_cache cache_type_a;
proxy_cache_key $request_uri;
proxy_cache_valid 200 302 24h;
proxy_cache_valid any 10s;
add_header X-Nginx-Cache $upstream_cache_status;
}
location @type_b {
proxy_pass http://app;
proxy_cache cache_type_b;
proxy_cache_key $request_uri;
proxy_cache_valid 200 302 30m;
proxy_cache_valid any 10s;
add_header X-Nginx-Cache $upstream_cache_status;
}
}
}