Regex 基于ngx.re.match()添加自定义头
我正在尝试根据Regex 基于ngx.re.match()添加自定义头,regex,nginx,lua,Regex,Nginx,Lua,我正在尝试根据uri值添加自定义头,在本例中,所有pdf文件: header_filter_by_lua_block { local m, err = ngx.re.match(ngx.var.uri, "%.pdf$", "io") if m then ngx.log(ngx.ERR, "found match: ", m[0]) ngx.header["X-Custom-Header"] = "ZZzz" end } 我在这个任务中使
uri
值添加自定义头,在本例中,所有pdf
文件:
header_filter_by_lua_block {
local m, err = ngx.re.match(ngx.var.uri, "%.pdf$", "io")
if m then
ngx.log(ngx.ERR, "found match: ", m[0])
ngx.header["X-Custom-Header"] = "ZZzz"
end
}
我在这个任务中使用了,因此我希望标准的lua
应该适用,因此%.
应该匹配
(点),但是它似乎不起作用。有什么问题吗
如果我将regex从
%.pdf$
更改为.pdf$
,那么它确实可以工作,但显然它不仅匹配blablabla.pdf
,而且还匹配blablablapdf
LuaNginx模块使用PCRE(与Perl兼容的正则表达式),因此应该使用\
而不是%
来转义特殊字符。反斜杠也是字符串转义符号,因此需要双转义:
ngx.re.match(ngx.var.uri, "\\.pdf$", "io")
或者,可以使用括号字符串文字而不是引号来避免双重转义:
ngx.re.match(ngx.var.uri, [[\.pdf$]], "io")