nginx - 创建多个缓存路径

时间:2014-11-05 21:56:17

标签: caching nginx

我是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"

中的指令重复

如何设置不同的缓存路径以在我的虚拟主机之间共享?

1 个答案:

答案 0 :(得分:2)

proxy_cache指令意味着" 现在在此块中使用此缓存"因此,当您多次使用此指令时,nginx无法决定使用哪个缓存以及显示和错误。您必须做的是删除proxy_cacheproxy_cache_valid指令,并在位置和/或服务器块中一次使用其中一个。

你必须知道在proxy_cache块中禁止使用proxy_cache_validif指令,这样你就不会得到你想要的东西(我假设你会这样做)根据某些测试选择特定的缓存。

因此,另一种方法是在上游的回复中使用特定的标题。您可以使用以下标头之一来设置缓存时间:

  • X-Accel-Expires
  • Cache-Control
  • Expires

Nginx默认会尊重这些标头。在使用proxy_ignore_headers确定缓存持续时间时,您可以告诉他忽略其中一些。