Различная конфигурация uwsg_cache зависит от пути URL - PullRequest
0 голосов
/ 08 ноября 2018

У меня настроен кеш uwsgi, но я хочу, чтобы он работал по-разному для разных мест. Мой конфиг:

uwsgi_cache_path /tmp/nginx_cache/ levels=1:2 keys_zone=mycache:60m inactive=10m;

server {
 listen *:80;
 server_name thewebsite.loc;


location @uwsgi {
    include uwsgi_params;
    uwsgi_cache mycache;
    uwsgi_cache_valid any 1h;
    uwsgi_cache_key $request_uri;
    uwsgi_pass unix:///var/run/app/uwsgi.sock;
    uwsgi_read_timeout 120s;
  }

  location / {
    try_files $uri @uwsgi;
  }
}

скажем, я хочу отключить кеш для определенного места. Я добавляю после блока для местоположения / другое местоположение:

  location /dynamic{
     uwsgi_cache off;
     try_files $uri @uwsgi;
  }

Но это не работает, и представление все еще кэшируется. Это возможно или не должно работать так вообще?

UPD: я также пытался настроить кэш в location /. В этом случае это просто не работает.

1 Ответ

0 голосов
/ 09 ноября 2018

Когда вы получаете доступ к /dynamic, nginx устанавливает uwsgi_cache off, но затем вы перенаправляете в @uwsgi место, где у вас включен кеш. Я думаю, что это вызывает твои проблемы.

Попробуйте переместить конфигурацию кэша в server контекст:

uwsgi_cache_path /tmp/nginx_cache/ levels=1:2 keys_zone=mycache:60m inactive=10m;

server {
 listen *:80;
 server_name thewebsite.loc;

 <b>uwsgi_cache mycache;
 uwsgi_cache_valid any 1h;
 uwsgi_cache_key $request_uri;</b>

location @uwsgi {
    include uwsgi_params;
    uwsgi_pass unix:///var/run/app/uwsgi.sock;
    uwsgi_read_timeout 120s;
  }

  location / {
    try_files $uri @uwsgi;
  }

  <b>location /dynamic {
     uwsgi_cache off;
     try_files $uri @uwsgi;
  }</b>
}

ВНИМАНИЕ: Я не тестировал этот конфиг, я не уверен, будет ли он работать

...