У меня есть динамический контроллер контента в CodeIgniter, который извлекает изображения из GridFS. На сервере запущен nginx, и я пытаюсь установить заголовки управления кэшем в моей конфигурации nginx, чтобы кэшировать изображения, обслуживаемые этим динамическим контроллером контента, в течение 7 дней. У меня правильно настроен конфиг в моей конфигурации nginx, но я получаю 404 заголовка от nginx, потому что файлы физически не существуют на сервере.
Моя директива управления кэшем выглядит следующим образом:
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, он делал странные вещи.
Может ли кто-нибудь указать мне правильное направление, как правильно настроить заголовки управления кэшем для этой ситуации? Спасибо всем =)
UPDATE:
Я изменил свой 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 устанавливает правильные заголовки expires для статических файлов, но я не могу на всю жизнь получить fastcgi и nginx для вывода заголовков expires для динамически выводимых изображений. Я должен что-то упустить в моей конфигурации fastcgi, чтобы разрешить истечение срока действия заголовков при обслуживании файлов php.