1

SSIを使用すると、NGinxはサブリクエストに間違ったキャッシュキーを使用します

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

問題は、メインリクエストでNGinxがSSI要素を含むページをキャッシュに保存し、サブリクエストをトリガーすると、結果としてこのページ(SSI要素を含む)を使用するため、無限再帰になることです。サブリクエストの(など)。$uri(とは異なり)これを回避するように正確に設計されていると思いまし$request_uriたが、明らかに機能しません。

nginxのバージョンは1.3.8です

4

1 に答える 1

1

少し長いdebug-session(nginxs debug-logsは...大きい)は私に答えを与えました:それは直接キャッシュキーではありませんでしたが、デフォルトでREQUEST_URIはに設定され$request_uriてい/etc/nginx/fastcgi_paramsます。キャッシュキーは正しいですが、リクエストは常に親のものと同じであるため、親ページは2回キャッシュされます。1回はparent-uri-key用、もう1回はssi-subrequest用です。以降のすべての呼び出しで、(壊れた)キャッシュされた値が使用されます。

fastcgi_param REQUEST_URI $uri;
于 2013-01-28T21:53:05.350 に答える