我一直在尝试使用我的 nginx 设置来阻止对任何不需要的目录的访问,但是每次添加一些目录时添加几行新行对我来说真的很烦人。我一直在看几个论坛,但所陈述的语法似乎都不起作用。我已经尝试过 syntax ^~ /(dir|dir2)/
,^~ (/dir|/dir2)/
等^~ (/dir/|/dir2/)
,但就像我说的那样,这些都不起作用,唯一的解决方案似乎是限制每个目录,这看起来真的很糟糕恕我直言。
如果您了解任何可能在这种情况下起作用的语法,我将非常感谢任何形式的回答。
操作系统:Debian GNU/Linux 10 (buster) nginx 版本:nginx/1.14.2
location ^~ /includes/ {
deny all;
return 403;
}
location ^~ /vendor/ {
deny all;
return 403;
}
location ^~ /packages/ {
deny all;
return 403;
}
location ^~ /res/ {
deny all;
return 403;
}
location ^~ /styles/ {
deny all;
return 403;
}
这
^~
意味着 nginx 将始终使用前缀匹配,而不检查正则表达式。要使用正则表达式进行匹配,您需要使用:
~
告诉 nginx 这是一个正则表达式^
匹配请求字符串的开头/
匹配 URI 开始斜杠()
通常声明一个捕获组。但是,?:
阻止捕获|
在组内用作“或”。