我正在尝试基于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-nginx-module,因此我希望标准lua
regex syntax应该适用,因此%.
应该与.
相匹配(点) ,但是似乎不起作用。有什么问题吗?
如果我将正则表达式从%.pdf$
更改为.pdf$
,那么它确实可以工作,但显然它不仅与blabla.pdf
匹配,而且与blablapdf
匹配。
答案 0 :(得分:1)
lua-nginx-module使用PCRE(与Perl兼容的正则表达式),因此应使用\
而不是%
来转义特殊字符。反斜杠也是Lua字符串转义符号,因此需要两次转义:
ngx.re.match(ngx.var.uri, "\\.pdf$", "io")
或者,您可以使用方括号字符串文字而不是引号来避免双重转义:
ngx.re.match(ngx.var.uri, [[\.pdf$]], "io")