nginx 汇总相似目录路径

nginx 汇总相似目录路径

我已经尝试了很多次 nginx 设置来阻止对任何不需要的目录的访问,但每次添加目录时都要添加几行新代码,这真的很烦人。我查看了几个论坛,但似乎没有一种语法有效。我尝试了语法^~ /(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;
        }

答案1

^~意味着 nginx 将始终使用前缀匹配,而不检查正则表达式。

要使用正则表达式匹配,您需要使用:

location ~ ^/(?:includes|vendor|packages|res|styles)/ {
  • ~告诉 nginx 这是一个正则表达式
  • ^匹配请求字符串的开头
  • /匹配 URI 开头的斜杠
  • ()通常会声明一个捕获组。但是,?:阻止捕获
  • |在组内用作“或”。

相关内容