ano*_*one 4 nginx cache reverse-proxy querystring
我们有以下 url 我们想要代理缓存:
file.php?parameter=one¶mater2=two&r=EPOCHTIMESTAMP
Run Code Online (Sandbox Code Playgroud)
查询字符串参数“参数”因请求而异。“paramater2”也是如此。
查询字符串参数 r 是我们用来确保客户端不提供缓存(在客户端)内容的时间戳。又名“缓存破坏者”。是的,我们还使用了所有适当的不缓存 h 标头。
现在,我们想通过 nginx 代理缓存其中的一些请求。是否可以指示 nginx 忽略 r 查询字符串参数,但在为条目设置缓存键时使用所有其他参数?如果我们不能忽略参数 r,那么 nginx 代理缓存将毫无用处,因为每个缓存键都是唯一的。
谢谢。
我们已经找到了这个问题的解决方案。
正确的做法是使用 nginx$arg_...
变量构造一个缓存键。$arg_...
将包含查询字符串参数。因此,在上面的示例中,我们将在缓存键中使用$arg_parameter
和$arg_parameter2
。
结果nginx.conf
看起来像:
http {
...
server {
location / {
...
proxy_cache_key $scheme$proxy_host$uri$is_args$arg_parameter$arg_parameter2;
}
}
...
}
Run Code Online (Sandbox Code Playgroud)
请注意,包含连字符(破折号)的查询字符串参数(例如data-*
参数)不适用于$arg_paramName
语法。在这篇文章中可以找到使用 Lua 的解决方法。
归档时间: |
|
查看次数: |
5162 次 |
最近记录: |