我想为图像设置一个自定义位置,以便设置更好的expires
值并将其从access.log
中删除。
图像的本地路径将像/var/www/html/public/image/user/{username}/{?subfolder}/filename.jpg
这样……
图像所在的位置可能有一个或多个子文件夹。
URL应该看起来像http://example.com/image/user/{username}/{?subfolder}/filename.jpg
。由于user
可能有不同的文件夹,但文件夹的深度不同,因此我无法对其进行硬编码。
我尝试使用此定位规则进行尝试,但是nginx尝试将其定位在默认根目录中,而不是在指定的根目录中。
location /image/[^\\]+/.*\.(jpg|jpeg|gif|png|css|ico)$ {
root /var/www/html/public/image;
expires 30d;
}
我尝试针对PCRE测试仪进行表达,并成功。感谢对此的任何帮助。
如果将示例中的root
设置为/var/www/html/public/image
,则对/image/user/foo.jpg
的请求将最终在/var/www/html/public/image/image/user/foo.jpg
处结束,这是不希望的。因此,我认为您不应该触摸root
(它必须保持指向public
目录)。
简单地:
location ^/image/.*/.*\.(jpg|jpeg|gif|png|css|ico)$ {
expires 30d;
}
将完成这项工作。
如果您的文件名以某种方式进行了哈希/版本化(例如foo.123.jpg
),则可以使用immutable
进行主动缓存:
immutable