我在 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 配置中必须缺少某些内容以允许过期标头。