Nginx的map 遇到一个问题,我想在nginx中提取文件所在路径,例如: https://abc.com/file/123/a.txt Nginx预置变量只有 /file/123/a.txt ,我需要用 map 进行函数映射。 这玩意在网上基本找不到,特别是涉及映射函数式的写法。从鬼佬论坛扒了个例子: map $uri $capture { ~(?<captured>^/[a-zA-Z0-9]+)[/] $captured; } 这个map大括号内可以写多条规则,这里只写了一条,含义是: 当 $uri 等于规则中 ~(?<captured>^/[a-zA-Z0-9]+[/]) 则 $capture 就等于 $captured 而 $captured 取自表达式中的 <captured> 运行后可以提取路径中的顶级目录,那么照猫画虎,我写出了: map $uri $dir { ~/(?<captured_dir>.*)/[^/]*$ $captured_dir; } 补充:location规则本身就可用正则,可以不用map。