我想创建一个$ cache_key,忽略所有查询参数,但是我用于版本化.css和.js文件的一个特殊(如果存在)。
示例:
<script type="text/javascript" src="/script.js?build=123">
部署时,使用新版本nr,上面的行将会显示
<script type="text/javascript" src="/script.js?build=124">
我想要的是根据&#39; build&#39;的可选出现来强制Nginx进行缓存。但忽略任何其他查询参数来计算$ cache_key。
前:
Path Cache as
/a /a
/a?build=1 /a?1
/a?build=2 /a?2
/a?robot1=x /a
/a?robot2=y /a
/a? /a
我试过了:
set $cache_key "$uri$is_args$arg_build"
但是我无法让它发挥作用。 (表现得像你期望的那样&#34; $ uri $ args&#34;)
更新
server {
listen 80;
server_name domain.se;
client_max_body_size 20M;
location / {
rewrite ^/(.*)$ /$1 break;
proxy_pass http://backend;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header Host $http_host;
proxy_set_header X-Protocol http;
proxy_read_timeout 480;
proxy_connect_timeout 480;
proxy_cache_key "$uri$is_args$arg_build";
proxy_cache my-cache;
proxy_ignore_headers X-Accel-Expires Expires Cache-Control;
proxy_cache_valid 200 302 1m;
proxy_cache_valid 404 30s;
proxy_cache_methods GET;
add_header X-Cache-Status $upstream_cache_status;
}
}
似乎我忘记了proxy_cache_key。以上配置有效。