Nginx使用" admin"阻止请求位置的用户在根目录中(仅限)

时间:2016-01-06 19:23:17

标签: regex nginx filter

我们使用nginx并努力阻止所有试图找到我们的秘密管理网址的用户,我们想添加一个nginx位置规则:

望着哪里 - 第一个目录/文件夹包含单词admin - 之后是任何事情 - 但不排除/ xxxx / adminhtml /其中在第二个文件夹或路由中找到admin一词 - 其中第二个文件夹或路由可以是包含admin的任何字符串

测试用例(例如,更多,例如):

  • / admin =>
  • /admin/badurl.php =>
  • /admin/route/openaccess.php =>
  • / cpadmin / =>
  • / admin / adminhtml =>
  • / cpadminbackend / =>
  • /adminbackend/route/openaccess.php =>
  • / xxx / myadminfolder / =>行
  • / xxx / admin / myroute / =>好的
  • / xyz / route / folderwithadmininit / =>行

我们的代码到目前为止

Drop people trying to access admin
location ~* /.*admin.*\/.*/ {
  return 444;
}

或者

location ~* /.*admin[^\/]*\/.*/ {
  return 444;
}

但似乎他们要么不工作,要么贪婪......

帮助表示赞赏

2 个答案:

答案 0 :(得分:2)

您的规则可以创建为:

location ~* ^/[^/]*admin

细分是:

  • 锚定到开头,以便我们捕获第一个目录组件
  • 允许零个或多个非/字符
  • 在第一个目录组件中捕获admin

有关正则表达式语法的更多信息,请参见here

答案 1 :(得分:0)

你试过吗?

location ~* /(admin|adminbackend|cpadmin|cpadminbackend)/