我配置了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 /
中配置缓存。在这种情况下,它根本不起作用。
答案 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;
}
}
注意:我没有测试此配置,我不确定它是否可以工作