Nginx正则表达式捕获长随机数字

时间:2015-06-10 23:16:14

标签: regex nginx

我想清除一些垃圾请求,例如:

/path/to/%4444
/path/to/%44444445555555
/path/to/%44444445555555%6666666

我尝试了不同的设置,比如

location ^~ /path/to/[\%]([0-9] {3})  {
       return 404;
      }

location ^~ /path/to/([\%])([0-9] {3})  {
       return 404;
      }

但是nginx没有重启。感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

我不明白,为什么你的regexp中的[0-9]和{3}之间的空格,包括没有重启,因为:

  

使用“〜”(对于区分大小写的匹配)和“〜”(对于不区分大小写的匹配)运算符,将变量与正则表达式进行匹配。正则表达式可以包含可供以后在$ 1 .. $ 9变量中重用的捕获。负操作符“!〜”和“!〜”也可用。如果正则表达式包含“}”或“;”字符,则整个表达式应包含在单引号或双引号中。 (nginx_docs

通过""逃避你的正则表达式。像

location "^~ /path/to/[\%]([0-9] {3})"  {
   return 404;
  }