Web 项目将静态内容放入 some /content/img 文件夹中。
url规则为:/img/{some md5}
但文件夹中的位置:/content/img/{前两位数字}/
Example
url: example.com/img/fe5afe0482195afff9390692a6cc23e1
location: /www/myproject/content/img/fe/fe5afe0482195afff9390692a6cc23e1
这个 nginx 位置是正确的,但很多不安全(符号点在正则表达式中不好):
location ~ /img/(..)(.+)$ {
alias $project_home/content/img/$1/$1$2;
add_header Content-Type image/jpg;
}
下一个位置更正确,但不起作用:
location ~ /img/([0-9a-f]\{2\})([0-9a-f]+)$ {
alias $project_home/content/img/$1/$1$2;
add_header Content-Type image/jpg;
}
帮我找到错误以获得更正确的 nginx 位置。
在 POSIX BRE 模式中,转义限制量词中的大括号是必要的,并且 NGINX 不使用该正则表达式风格。在这里,您不应该转义限制量词大括号,但您需要告诉 NGINX 您将大括号作为正则表达式模式字符串的一部分传递。
因此,您需要用双引号将整个模式括起来:
Use
location ~ "/img/([0-9a-fA-F]{2})([0-9a-fA-F]+)$"
这里有一个正则表达式演示 https://regex101.com/r/3kpVyx/1.
请注意,在当前场景中,您可以只重复子模式:
/img/([0-9a-fA-F][0-9a-fA-F])([0-9a-fA-F]+)$
^^^^^^^^^^^^^^^^^^^^^^^^
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)