我有 - 不幸的是Windows-Nginx服务器用于静态内容(如产品照片等)。目前我有一个缓存的全局设置,但现在我需要改变它。
我有一个文件夹,其路径如下所示:
E:\xampp\srv\project-files\projectX\files\users\user-hash\visualisator\views
正如您在路径中看到的那样, user-hash 变量会发生变化。在这个文件夹中,我有* .jpg文件,需要禁用缓存。
我已经尝试过这样的事情(位于其他(全局)位置设置之上):
location ~ /users/ {
alias "E:/xampp/srv/project-files/projectX/files/users";
expires -1;
add_header 'Cache-Control' 'no-store, no-cache, must-revalidate, proxy-revalidate, max-age=0';
}
我一直希望它至少会禁用此文件夹中所有文件的缓存。但我得到的唯一结果是http 403
。
我可以使用文件夹users
中的已禁用缓存,如果它可以正常工作,但最好的解决方案是禁用整个路径的缓存(使用 user-hash 变量包括)和仅适用于特定文件类型(* .jpg)。
任何想法或建议如何实现这一目标? PS:NGinx对我来说是新的,我用这种技术花了8个小时的时间,所以很抱歉,如果这是一个愚蠢的问题,但我无法弄明白或在任何地方找到它。
提前谢谢!
答案 0 :(得分:3)
location ~ .*files/projectX/files/users/.*jpg$ {
expires -1;
add_header 'Cache-Control' 'no-store, no-cache, must-revalidate, proxy-revalidate, max-age=0';
}
这就是诀窍。
答案 1 :(得分:0)
这对我有用,我需要排除的文件是 PHP 文件。也许您可以为您的 location ~ .*files/projectX/files/users/.*jpg$
使用相同的代码,它也可以工作。我尝试了上面和其他页面中的所有示例。唯一对我有用的就是这个。我的文件是一个 PHP 文件,我必须创建配置文件最后一部分的完整副本。也许更换您的位置对您有用。
location ~ player\.php {
set $no_cache 1;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
if (-f $request_filename) {
# Only throw it at PHP-FPM if the file exists (prevents some PHP exploits)
fastcgi_pass unix:/tmp/run/php7-fpm.sock;
#fastcgi_read_timeout 3600;
}
}