如何为不同的 php 文件设置不同的 `expires` 值

如何为不同的 php 文件设置不同的 `expires` 值

由于 nginx 没有expires向我呈现的 PHP 页面添加任何标头(例如 example.com 打开 index.php),因此我已将以下内容添加到我的配置中:

# PHP proxy
location ~* \.php$ {
  expires         -1;
  try_files       $uri =404;
  fastcgi_index   index.php;
  fastcgi_pass    unix:/var/run/php-fpm/www.sock;
  include         /etc/nginx/fastcgi_params;
  include         /etc/nginx/fastcgi_params_env;
  fastcgi_param   SCRIPT_FILENAME    $document_root$fastcgi_script_name;
  fastcgi_param   SCRIPT_NAME        $fastcgi_script_name;
}

现在我遇到一个问题,我有一个img.php调整大小和缓存图像的文件。此脚本直接返回图像(例如image/jpeg),因此它应该会过期很久。

如何区分不同的 PHP 文件?

答案1

理想情况下,你的 Web 应用程序应该管理自己的缓存控制标头。但如果没有,你可以使用expires在 nginx 中执行此操作。

在这种情况下,您可以使用map根据要发送的内容类型设置不同的值。例如:

map $sent_http_content_type $expires {
    default             -1;
    application/rss+xml off;
    application/pdf     max;
    ~image/             365d;
}

当然,你应该把它们改成你真正想要的。

然后在您的expires指令中,使用您设置的变量:

    expires $expires;

相关内容