Nginx - 参数匹配的“expires”更短

Nginx - 参数匹配的“expires”更短

我正在使用这样的重写

    if (!-e $request_filename) {
            rewrite ^/(en|ga)?/?(.*)$ /index2.php?cultureKey=$1&mq=$2 last;
    }

但之后我需要某些重写的 URL 缓存 30 秒。剩余的 fast_cgi 请求应该是 5 分钟。

    fastcgi_cache_valid   200 302  5m;

    expires 5m;
    if ($args ~* (dynamic\.html)){
        expires 30s;
    }

我尝试过移动它们,但是 dynamic.html 和其他文件在 30 秒后仍然被缓存,或者它们都在 30 秒后过期。

如何使dynamic.html(重写)缓存30秒,剩余文件缓存5分钟?

谢谢

答案1

$args是包含请求参数的变量GET,你确定不在$request_uri或之后吗$uri?也许使用位置块更好:

location ~* dynamic.html {
    expires 30s
}

但这取决于您的其余配置,所以 YMMV。

答案2

我认为是“如果”导致了问题。你应该读读这个http://wiki.nginx.org/IfIsEvil

相关内容