由于 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;