nginx proxy_no_cache 不起作用

nginx proxy_no_cache 不起作用

我正在尝试设置一个具有两个条件的缓存反向代理;如果满足任何一个条件,它就不应该存储来自原点的文件:

  • 部分内容请求
  • 带有查询字符串的请求

按照下面的配置,我让 nginx 不存储部分内容请求。
但是,它仍然存储带有查询字符串的请求。我在这里遗漏了什么?

curl -r 1000-2000 http://edge.com/data/abcdef.dat[确定。未存储文件。]
wget http://edge.com/data/abcdef.dat?query=string[不确定。abcdef.dat 存储在边缘。]

位置 /数据/ {
    设置 $originuri /origin$uri$is_args$args;
    错误页面 404 = $originuri;
}

位置 /原点/ {
    代理密码 http://origin.com:1111;
    代理存储/mnt1/edge/存储;
    代理临时路径/mnt1/edge/tmp;
    proxy_set_header 如果范围 $http_if_range;
    proxy_set_header 范围 $http_range;
    proxy_no_cache $http_range $http_if_range $is_args;
}

答案1

如果我没看错您的配置,当您将请求传递到原始位置进行代理时,您正在构建一个不包含 GET 查询字符串的 URI 字符串(即您正在展平$args)。如果真是这样,那就可以解释为什么原始位置看起来$is_args不真实。

这是我的直觉——我想查看请求日志以查看它是否正确。

相关内容