使用Nginx基于字符串形式的url提供图像

使用Nginx基于字符串形式的url提供图像,nginx,Nginx,我想通过Nginx提供上传的图像,这样Express应用程序就可以专注于其他任务。在这种情况下,通常的别名方法似乎还不够 硬盘上的文件/图像: 图像被重命名并存储在随机字符串下。这是硬盘驱动器上文件文件夹的外观: /srv/expressap/uploads/files/images 33134ijnas9d8.jpg 81j917asdlkas.png ja982p1031la0.png ... 请求URL以获取图像 问题: 这显然不起作用,因为“puppy.jpg”不是图像“33134i

我想通过Nginx提供上传的图像,这样Express应用程序就可以专注于其他任务。在这种情况下,通常的别名方法似乎还不够

硬盘上的文件/图像: 图像被重命名并存储在随机字符串下。这是硬盘驱动器上文件文件夹的外观:

/srv/expressap/uploads/files/images

33134ijnas9d8.jpg
81j917asdlkas.png
ja982p1031la0.png
...
请求URL以获取图像 问题: 这显然不起作用,因为“puppy.jpg”不是图像“33134ijnas9d8.jpg”的实际文件名

location /files/images {
   alias /srv/expressap/uploads/files/images
}
location部分如何为给定url下的实际图像提供服务

如何 1) 从url获取id字符串


2) 根据id字符串为图像提供服务?

您需要使用regexp来实现此目的,Nginx它们

~*
-regexp不区分大小写修饰符

(\w+)
-任何不带空格的类似单词的序列

$1
$2
-括号中匹配组的参考

有关将regexps与
别名一起使用的详细信息

因此,您主要需要通过regexp提取
$uri
的某些部分,并将它们传递给
alias
指令。 您可以测试您的regexp,尽管我没有用Nginx测试它,但实现可能会有所不同

location /files/images {
   alias /srv/expressap/uploads/files/images
}
location ~* ^/files/images/(\w+)/.+\.(jpg|png|gif)$ {
   alias /srv/expressap/uploads/files/images/$1.$2;
}