Nginx proxy_cache_key 过滤某些参数如何实现

嗯,这个问题搜起来还挺费劲的,还好谷歌上尝试了几个搜索关键词,找到了有价值的参考,配置是删除不必要的推广参数然后做为缓存的key。

proxy_cache_key默认值为:

proxy_cache_key $scheme$proxy_host$uri$is_args$args;

示例代码如下:

set $c_uri $args; # e.g. "param1=true&param4=false"

if ($c_uri ~ (.*)(?:&|^)utm_source=[^&]*(.*)) {
set $c_uri $1$2;
}

if ($c_uri ~ (.*)(?:&|^)utm_term=[^&]*(.*)) {
set $c_uri $1$2;
}

if ($c_uri ~ (.*)(?:&|^)utm_campaign=[^&]*(.*)) {
set $c_uri $1$2;
}

if ($c_uri ~ (.*)(?:&|^)utm_medium=[^&]*(.*)) {
set $c_uri $1$2;
}

if ($c_uri ~ (.*)(?:&|^)utm_content=[^&]*(.*)) {
set $c_uri $1$2;
}

if ($c_uri ~ ^&(.*)) {
set $c_uri $1;
}

set $c_uri $is_args$c_uri;
proxy_cache_key $c_uri;

代码摘录自:https://gist.github.com/a-vasyliev/de8ffc6c6aa74cdeadfe

总体核心就是处理好参数,最终设置即可。

同样原理,对fastcgi_cache_key应该也是通用的。


未经允许不得转载:阿藏博客 » Nginx proxy_cache_key 过滤某些参数如何实现