uwsg_cache的不同配置取决于URL路径

时间:2018-11-08 09:35:47

标签: nginx uwsgi

我配置了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 :(得分:1)

当您访问/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;

 uwsgi_cache mycache;
 uwsgi_cache_valid any 1h;
 uwsgi_cache_key $request_uri;

location @uwsgi {
    include uwsgi_params;
    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;
  }
}
  

注意:我没有测试此配置,我不确定它是否可以工作