Regex 子文件夹深度未知的nginx位置
我想为图像设置一个自定义位置,以便设置更好的Regex 子文件夹深度未知的nginx位置,regex,nginx,nginx-location,Regex,Nginx,Nginx Location,我想为图像设置一个自定义位置,以便设置更好的expires值,并将其从access.log中删除 图像的本地路径如下所示/var/www/html/public/image/user/{username}/{?subfolder}/filename.jpg 图像所在的位置可以有一个或多个子文件夹 url应该看起来像http://example.com/image/user/{username}/{?subfolder}/filename.jpg。由于可以使用不同的文件夹深度将不同的文件夹发送给u
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测试仪上尝试了这个表达式,结果成功了。感谢您的帮助。如果您将示例中的
根设置为/var/www/html/public/image
,那么对/image/user/foo.jpg
的请求将以/var/www/html/public/image/image/user/foo.jpg>结束,这是不希望的。因此,我认为您不应该触摸根目录(它必须指向公共目录)
简单地说:
location ^/image/.*/.*\.(jpg|jpeg|gif|png|css|ico)$ {
expires 30d;
}
我会做好的
如果以某种方式对文件名进行了哈希/版本控制(例如foo.123.jpg
),则可以使用以下方式进行主动缓存:
location ^/image/.*/.*\.(jpg|jpeg|gif|png|css|ico)$ {
immutable on;
}