nginx 代理缓存和 ssi

nginx 代理缓存和 ssi

我正在使用 nginx 缓存来自上游 apache 服务器的请求,但我希望里面的几个块始终从 apache 获取。我希望 ssi 可以做到这一点,但 SSI 标签未经预处理就输出给用户。

 location ~* ^.+\.html$ {
        proxy_pass  http://localhost:9999;
        proxy_cache_key "$prime$scheme$host$request_uri";

        ssi on;
        ssi_silent_errors off;
        log_subrequest on;
        proxy_set_header   Host             $host;
        proxy_set_header   X-Real-IP        $remote_addr;
        proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;
        proxy_set_header   X-Country        $country_code;

        proxy_cache my-cache;


        proxy_cache_bypass $http_x_refresh_cache;
        proxy_cache_valid  200 302  30d;
        proxy_cache_valid  404      10m;
        proxy_cache_valid  any      1m;


    }

这是相关的 nginx 配置。

答案1

proxy_cache_key "$prime$scheme$host$request_uri";

此行将页面的所有部分缓存在同一个键(用户输入的 URI)下,因此页面的不同部分会相互覆盖,然后只返回最后写入的部分。您需要使用$uri而不是$request_uri,以便每个页面的每个部分都缓存在自己的个人名称下。

答案2

相关内容