Nginx - 拒绝文件夹,但使用正则表达式的子文件夹除外

Nginx - 拒绝文件夹,但使用正则表达式的子文件夹除外

我想拒绝访问app目录中的任何内容,但包含Assets文件夹的子文件夹除外。

例如:

允许这些文件 /app/bundles/ApiBundle/Assets/css/Thing.js /app/bundles/AssetsBundle/Assets/css/mautic.css

拒绝这些:``` /app/bundles/Whatever/Config/config.php /app/bundles/AppCache.php /app/whatever.php

这很好用(https://serverfault.com/a/450378/310646)...如果我不使用正则表达式。

例如,这个有效:

location ^~ /app/bundles/ApiBundle/Assets/ {
    allow all;
}

location ^~ /app/ { 
    deny all; 
}

但事实并非如此:

location ^~ /app/bundles/.+/Assets/ {
    allow all;
}

location ^~ /app/ { 
    deny all; 
}

有任何想法吗?

答案1

我明白了。

location ~ /app/bundles/.*/Assets/ {
    allow all;
    access_log off;
}
location ~ /app/ { deny all; }

但是...这需要高于任何可能对其产生影响的其他位置块(例如location ~ \.php$)。

在正则表达式之前使用^~,并且不适用于正则表达式......

相关内容