子文件夹深度未知的 nginx 位置
nginx location with unknown subfolder depth
我想要自定义图像位置,以便设置更好的 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;
}
会完成任务的。
如果你的文件名是 hashed/versioned(例如 foo.123.jpg
),你可以使用 immutable
进行积极的缓存:
location ^/image/.*/.*\.(jpg|jpeg|gif|png|css|ico)$ {
immutable on;
}
我想要自定义图像位置,以便设置更好的 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;
}
会完成任务的。
如果你的文件名是 hashed/versioned(例如 foo.123.jpg
),你可以使用 immutable
进行积极的缓存:
location ^/image/.*/.*\.(jpg|jpeg|gif|png|css|ico)$ {
immutable on;
}