Я использую кэширование fastcgi и хотел бы указать, по каким URL-адресам кэш должен быть активен.
Я использую правило перезаписи, чтобы определить, к какому файлу контроллера получить доступ, и динамически устанавливать любые параметры запроса
Я хочу указать URL-адреса, в которых активирован кэш, и те, в которых он неактивен, это мой код:
server {
listen 80;
server_name domain.com;
root /home/site/wwwroot;
set %skip_cache 1; #this is the variable that I want to set to 0 on specific URLS
location / {
try_files $uri $uri/ $uri.html @php;
}
location @php {
rewrite ^(/[^/]+)$ $1.php last;
rewrite ^(/[^/]+)/(.*)$ $1.php?q=$2 last;
}
location /user/ {
set $skip_cache 0;
}
location /objects/ {
set $skip_cache 0;
}
location ~ \.php$ {
try_files $uri =404;
include fastcgi_params;
fastcgi_pass unix:/run/php/php7.0-fpm.sock;
fastcgi_split_path_info ^(.+?\.php)(/.*)?$;
fastcgi_connect_timeout 300;
...etc...
#cache parameters
fastcgi_param FASTCGI_CACHE 1;
fastcgi_cache cfcache;
fastcgi_cache_valid 30s;
fastcgi_cache_bypass $skip_cache;
fastcgi_no_cache $skip_cache;
add_header X-FastCGI-Cache $upstream_cache_status;
}
Как видите, переменная $ skip_cache установлена в1 по умолчанию, и я хотел бы добавить в белый список URL-адреса для кэширования.
Пример, который я хотел бы кэшировать, это domain.com
, domain.com/user/123
и domain.com/objects/456
В настоящее время, если я просматриваюдо /user/123
, результатом является ошибка 404
, так как я считаю, что блок местоположения с переменной настройкой используется исключительно.