我是nginx的新手,所以我不确定这是否可行。
但是,我正在尝试为要使用的网站创建简短,长和从不缓存。
我天真地尝试在我的 http 块中设置它们:
proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=short:10m;
proxy_cache short;
proxy_cache_key "short:$scheme$proxy_host$uri$is_args$args";
proxy_cache_valid 2m;
proxy_cache_path /data/nginx/cache levels=1:2 keys_zone=long:10m;
proxy_cache long;
proxy_cache_key "long:$scheme$proxy_host$uri$is_args$args";
proxy_cache_valid 1h;
proxy_cache_path /data/nginx/cache levels=1:2 keys_zone=day:10m;
proxy_cache never;
proxy_cache_key "long:$scheme$proxy_host$uri$is_args$args";
proxy_cache_valid 1d;
proxy_cache off;
重新加载时会抛出以下错误:
[emerg]:" proxy_cache"
中的指令重复
如何设置不同的缓存路径以在我的虚拟主机之间共享?
答案 0 :(得分:2)
proxy_cache
指令意味着" 现在在此块中使用此缓存"因此,当您多次使用此指令时,nginx无法决定使用哪个缓存以及显示和错误。您必须做的是删除proxy_cache
和proxy_cache_valid
指令,并在位置和/或服务器块中一次使用其中一个。
你必须知道在proxy_cache
块中禁止使用proxy_cache_valid
和if
指令,这样你就不会得到你想要的东西(我假设你会这样做)根据某些测试选择特定的缓存。
因此,另一种方法是在上游的回复中使用特定的标题。您可以使用以下标头之一来设置缓存时间:
X-Accel-Expires
Cache-Control
Expires
Nginx默认会尊重这些标头。在使用proxy_ignore_headers
确定缓存持续时间时,您可以告诉他忽略其中一些。