2014-03-03 135 views
0

我需要拒绝所有访问大多数文件与Nginx的特定文件夹位置指令被忽略?

这是我的配置,我试过了。

location ~ /rapidleech/(classes|configs|files|hosts|languages|rar|templates) { 
     deny all; 
    } 

location /rapidleech/files/files.lst { 
    allow all; 
    } 

信息:rapidleech文件夹包含类(文件夹),CONFIGS(文件夹)....

Nginx的似乎忽视了allow all;我试图访问时,你得到403禁止

/rapidleech/files/files.lst 

任何帮助表示赞赏..

回答

1

这是因为正则表达式位置优先于正常位置。阅读documentation,了解nginx如何选择最佳匹配位置。

在你的情况,你可以防止使用^~修改检查正则表达式的位置:

location ~ /rapidleech/(classes|configs|files|hosts|languages|rar|templates) { 
    deny all; 
} 

location ^~ /rapidleech/files/files.lst { 
    allow all; 
} 

此外,你应该意识到,这正则表达式的位置对阵的请求的任何一部分,而不是仅仅是个开始,让您的配置阻止也可以访问/some/path/rapidleech/classes

如果有可能禁止所有的树,它会更简单,更高效。

location /rapidleech/ { 
    deny all; 
} 

location /rapidleech/files/files.lst { 
    allow all; 
}