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")