特定の場所のコンテンツのみをキャッシュしたい。しかし、正規表現を使用しようとすると、キャッシュされません。
proxy_cache_path /AINginxService/nginx-1.16.1/cache/ levels=1:2 keys_zone=one:10m max_size=8g inactive=5d use_temp_path=off;
proxy_cache one;
location ~* /v1/mydata/studies/[0-9.]+/series/[0-9.]+/instances/[0-9.]+/rendered {
#rewrite http://([^/]+)/rendered break;
proxy_cache_valid 200 120h;
proxy_pass http://127.0.0.1:9000/v1/mydata;
proxy_set_header Host $host;
proxy_pass_request_headers on;
proxy_http_version 1.1;
proxy_set_header Origin "";
proxy_connect_timeout 1d;
proxy_send_timeout 1d;
proxy_read_timeout 1d;
send_timeout 1d;
}
# Rest api entry point
location /v1/mydata {
#proxy_cache_valid 200 120h;
proxy_pass http://127.0.0.1:9000/v1/mydata;
proxy_set_header Host $host;
proxy_pass_request_headers on;
proxy_http_version 1.1;
proxy_set_header Origin "";
proxy_connect_timeout 1d;
proxy_send_timeout 1d;
proxy_read_timeout 1d;
send_timeout 1d;
}
}
PS : /v1/mydata の proxy_cache_valid のコメントを外すと、すべてがキャッシュされます。
注: 可能な URL パターン
1. /v1/mydata/studies/{study_id}/ # キャッシュしない 2. /v1/mydata/studies//series/{series_id}/ # キャッシュしない 3. /v1/mydata/studies//series/{series_id}/instances/{instance_id}/ # キャッシュしない 4. /v1/mydata/studies//series/{series_id}/instances/{instance_id}/rendered # これをキャッシュ