nginx/1.4.2 + Apache があり、すべてのリクエストを nginx でキャッシュしたいと考えています。このロケーション ルールは、.php のキャッシュ ファイルを作成しますが、.html のキャッシュ ファイルは作成しません。
location ~* \.(html|php)$ {
proxy_pass http://127.0.0.1:8080;
proxy_set_header Host my-host-name.com;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Real-IP $remote_addr;
add_header cache "html";
proxy_cache default;
proxy_cache_min_uses 1;
proxy_cache_valid 1d;
proxy_cache_key "$host|$request_uri";
proxy_hide_header "Set-Cookie";
proxy_ignore_headers "Cache-Control" "Expires";
}
ヘッダー「キャッシュ」が応答に追加されたため、場所が機能しています。
私は "location / " を試してみました - キャッシュに保存された .php 拡張子を持つ (そして何も持たない) スクリプトへのリクエスト。拡張子が .html のスクリプトの場合、nginx はキャッシュを作成しません。
nginx が .html 拡張子のスクリプトを無視する理由がわかりません。スクリプトの名前を .php に変更する - それは方法ではありません。私は CMS を使用しており、.html を含むページの人間が読める URL を作成します。Google インデックスには何千ものページがあり、名前を変更するとサイトの再インデックスが行われます。