Nginx $ cache_key,可选$ arg

时间:2015-04-15 07:33:19

标签: nginx

我想创建一个$ 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。以上配置有效。

0 个答案:

没有答案