CodeIgniter に、GridFS から画像をプルする動的コンテンツ コントローラーがあります。サーバーはnginxを実行しており、nginx構成でキャッシュ制御ヘッダーを設定して、この動的コンテンツコントローラーによって提供される画像を7日間キャッシュしようとしています。nginx 構成で構成が正しく設定されていますが、ファイルがサーバー上に物理的に存在しないため、nginx から 404 ヘッダーを取得しています。
私のキャッシュ制御ディレクティブは次のとおりです。
location ~* \.(js|css|png|jpg|jpeg|gif|ico)$ {
expires 7d;
log_not_found off;
}
log_not_found は、nginx が 404 エラーをログに記録しないようにするのに役立ちますが、ブラウザーに送信されるヘッダーは依然として 404 エラーです。phpの「header」機能でヘッダーを手動で設定してみましたが、nginxはphp-fpmを使っているため、変なことをしていました。
この状況でキャッシュ制御ヘッダーを適切に設定する方法について、誰かが正しい方向に向けることができますか? みんなありがとう=)
アップデート:
nginx conf を、すべての静的ファイルと動的コントローラー用の特別な場所に変更しました。
location ~ ^/(dres|js|css|art)/ {
access_log off;
expires 7d;
add_header Cache-Control public;
try_files $uri $uri/ /index.php?$args;
}
Nginxは静的ファイルに正しい有効期限ヘッダーを設定していますが、動的に出力される画像の有効期限ヘッダーを出力するためにfastcgiとnginxを取得することはできません。PHPファイルを提供するときに有効期限ヘッダーを許可するには、fastcgi構成に何かが欠けているに違いありません。