当我使用SSI时,NGinx使用错误的缓存密钥进行子请求
fastcgi_cache_key "$request_method $scheme://$host$uri";
问题是,它以无限递归结束,因为在主要请求上NGinx将包含SSI元素的页面存储在其缓存中,然后当它触发子请求时,使用此页面(包括SSI元素) )作为子请求的结果(依此类推等)。我认为$uri
的目的是为了避免这种情况(与$request_uri
不同),但显然它不起作用。
nginx版本是1.3.8
答案 0 :(得分:1)
稍微长一点的调试会话(nginxs调试日志......大)给了我答案:它不是直接缓存密钥,但默认情况下REQUEST_URI
设置为{{1在$request_uri
中。缓存键是正确的,但请求始终与父缓冲区相同,因此父页面缓存两次:一次用于parent-uri-key,一次用于ssi-subrequest。在每次后续调用中,都会使用(损坏的)缓存值。
/etc/nginx/fastcgi_params