Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex Nginx阻止使用“请求位置”的用户;行政";在根目录中(仅限)_Regex_Nginx_Filter - Fatal编程技术网

Regex Nginx阻止使用“请求位置”的用户;行政";在根目录中(仅限)

Regex Nginx阻止使用“请求位置”的用户;行政";在根目录中(仅限),regex,nginx,filter,Regex,Nginx,Filter,我们使用nginx,为了阻止所有试图查找我们的机密管理员url的用户,我们希望添加nginx位置规则: 在什么地方找 -第一个目录/文件夹包含单词admin -接下来是什么 -但不排除/xxxx/adminhtml/在第二个文件夹或路由中可以找到admin一词,第二个文件夹或路由可以是包含admin的任何字符串 测试用例(当然还有更多的例子): /管理员=>停止 /admin/badurl.php=>stop /admin/route/openaccess.php=>stop /cpadmin

我们使用nginx,为了阻止所有试图查找我们的机密管理员url的用户,我们希望添加nginx位置规则:

在什么地方找 -第一个目录/文件夹包含单词admin -接下来是什么 -但不排除/xxxx/adminhtml/在第二个文件夹或路由中可以找到admin一词,第二个文件夹或路由可以是包含admin的任何字符串

测试用例(当然还有更多的例子):

  • /管理员=>停止
  • /admin/badurl.php=>stop
  • /admin/route/openaccess.php=>stop
  • /cpadmin/=>停止
  • /admin/adminhtml=>stop
  • /cpadminbackend/=>停止
  • /adminbackend/route/openaccess.php=>stop
  • /xxx/myadminfolder/=>确定
  • /xxx/admin/myroute/=>正常
  • /xyz/route/folderwithadmininit/=>正常
到目前为止我们的代码

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

location ~* /.*admin[^\/]*\/.*/ {
  return 444;
}
但看起来他们要么不工作要么贪婪

感谢帮助

你试过了吗

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

您的规则可以创建为:

location ~* ^/[^/]*admin
分项数字如下:

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

更多关于正则表达式语法的信息可以找到。

@snh\u nl更新了答案ahhh,所以在这种情况下越少越好!让我测试一下,然后再给你回复