如果存在特定标头,则更改 nginx proxy_cache_key

如果存在特定标头,则更改 nginx proxy_cache_key

我正在尝试使用不同的proxy_key缓存ajax请求。

我的常规代理密钥:

 proxy_cache_key "$host$request_uri";

我想对 ajax 请求(带有 X-Requested-With 标头)使用不同的 proxy_cache_key。

像这样

if ($http_x_requested_with) {
    proxy_cache_key "$host$request_uri$cookie_SID";
}

我怎样才能做到这一点?

答案1

也许是这样的

首先,保存"$host$request_uri"到变量中。然后在里面if更改变量值。最后proxy_cache_key用该自定义变量设置你的。

边注if:如果您不想得到意外结果,切勿使用内部位置。请参阅假如邪恶

这里是例子:

http {
    ...
    server {
        ...
        set $cache_key "$host$request_uri";

        if ($http_x_requested_with) {
            set $cache_key "$host$request_uri$cookie_SID";
        }

        proxy_cache_key $cache_key;

        location / {
            ....
        }

        location /others {
            .....
        }
    }
}

相关内容