使用FastCGI的SSI子请求的缓存密钥错误

时间:2013-01-28 00:00:38

标签: nginx ssi

当我使用SSI时,NGinx使用错误的缓存密钥进行子请求

fastcgi_cache_key       "$request_method $scheme://$host$uri";

问题是,它以无限递归结束,因为在主要请求上NGinx将包含SSI元素的页面存储在其缓存中,然后当它触发子请求时,使用此页面(包括SSI元素) )作为子请求的结果(依此类推等)。我认为$uri的目的是为了避免这种情况(与$request_uri不同),但显然它不起作用。

nginx版本是1.3.8

1 个答案:

答案 0 :(得分:1)

稍微长一点的调试会话(nginxs调试日志......大)给了我答案:它不是直接缓存密钥,但默认情况下REQUEST_URI设置为{{1在$request_uri中。缓存键是正确的,但请求始终与父缓冲区相同,因此父页面缓存两次:一次用于parent-uri-key,一次用于ssi-subrequest。在每次后续调用中,都会使用(损坏的)缓存值。

/etc/nginx/fastcgi_params