我有一个用于静态内容的-unfortunately Windows服务器(比如产品照片等等)。目前,我已经有了一个全局缓存设置,但现在我只需要对其进行很少的更改。
我有一个文件夹,其中的路径如下所示:
E:\xampp\srv\project-files\projectX\files\users\user-hash\visualisator\views正如您在路径中看到的那样,用户-散列变量发生了变化。在这个文件夹中,我有需要禁用缓存的*.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的禁用缓存,如果它能够工作,那么最好的解决方案是禁用整个路径的缓存(包括用户哈希变量),并且只禁用特定的文件类型(*.jpg)。
有什么想法或建议如何实现这一点?PS: NGinx对我来说是新的,我花了8个小时在这个技术上,如果这是个愚蠢的问题,我很抱歉,但我不可能弄清楚,也找不到它。
提前谢谢你!
发布于 2018-05-15 13:00:42
location ~ .*files/projectX/files/users/.*jpg$ {
expires -1;
add_header 'Cache-Control' 'no-store, no-cache, must-revalidate, proxy-revalidate, max-age=0';
}这就行了。
发布于 2021-03-21 17:21:10
这对我有效,我需要排除的文件是一个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;
}
}https://stackoverflow.com/questions/50344766
复制相似问题