nginx: fastcgi_cache - как отключить для определенной страницы?

T-34
На сайте с 16.02.2007
Offline
133
2013

Использую конфиг на основе wiki.nginx.org/Drupal:



server {
listen 80;
server_name example.com;
root /path;


location / {
try_files $uri @rewrite;
}

location @rewrite {
rewrite ^/(.*)$ /index.php?q=$1;
}

location ~ \.php$ {
fastcgi_split_path_info ^(.+\.php)(/.+)$;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $request_filename;
fastcgi_intercept_errors on;
fastcgi_pass unix:/var/run/fpm.sock;
fastcgi_temp_path /tmp/nginx;
fastcgi_cache tmpcache;
fastcgi_cache_key $uri$is_args$args;
fastcgi_cache_use_stale error timeout invalid_header updating http_500 http_503;
fastcgi_cache_valid 1h;
fastcgi_cache_purge PURGE from 127.0.0.1;
}

Нужно для страницы /rand (index.php?q=rand) отключить кэширование.

Как это возможно с такой конфигурацией?

В fastcgi_no_cache и fastcgi_cache_bypass выражения типа ($arg_q = "rand") не работают (вернее, воспринимаются как true),

if ($arg_q = "random") {
break;
}

location index.php?q=rand {
fastcgi_cache off;
}

не работает...

Буду признателен за подсказку.

Рекомендую VPS за $5/месяц (https://m.do.co/c/e366f023194b). Готовый сервер разворачивается за 2 минуты.
Artjom77
На сайте с 11.09.2007
Offline
75
#1

location ~ \.php$ {

set $fcache "tmpcache";

if ($request_uri = "/index.php?q=rand") {
set $fcache off;
}

fastcgi_cache $fcache;

...
}
Проверить сайт на доступность из разных стран (http://check-host.net)
T-34
На сайте с 16.02.2007
Offline
133
#2


Reloading nginx configuration: nginx: [emerg] "fastcgi_cache" zone "$fcache" is unknown


---------- Добавлено 26.05.2013 в 11:39 ----------

Artjom77, однако спасибо за подсказку с использованием переменной!


location ~ \.php$ {
set $nocache 0;

if ($arg_q = "rand") {
set $nocache true;
}

fastcgi_no_cache $nocache;
fastcgi_cache_bypass $nocache;

...
}

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий