我试图限制访问OpenBSD的httpd本地服务器上托管的简单网站的一些子文件夹。配置相当简单,它是用于测试目的:
server "10.0.1.222" {
listen on 10.0.1.222 port 80
log style combined
location "/*php*"{
root "/FOLDER"
fastcgi socket "/run/php-fpm.sock"
}
directory {
index "index.php"
}
location "/*" {
root "/FOLDER"
}
location "/SUBFOLDER/*" {block}
}
字符串
在SUBFOLDER
里面我放了一些不打算直接查看的htmls。在最后一个location
指令中,我希望像http://10.0.1.222/SUBFOLDER/01.html
这样的请求能被403
代码阻止,但我无法实现。
虽然http://10.0.1.222/SUBFOLDER/
返回access denied
,但在SUBFOLDER
中请求任何正确的html文档名称都可以满足该请求,而不会有任何抱怨。
如果string:/SUBFOLDER/*
是正确的shell glob,它应该匹配string /SUBFOLDER/
本身+后面给出的任何字符串,那么像http://10.0.1.222/SUBFOLDER/01.html
这样的请求应该返回代码403
。但它不起作用。我尝试了很多组合:"/SUBFOLDER/*"
、"/SUBFOLDER/*.html"
等等,有或没有前导/
。没有效果。
可能有什么我不明白的地方,但我不能纠正我的错误。我错过了什么?
1条答案
按热度按时间anauzrmj1#
快速回答我自己的问题,从www.example.com获得misc@openbsd.org:根据手册man httpd.conf在位置声明的情况下第一场比赛获胜。为了避免一些更具体的规则被忽视,有必要将它们放在更全球性的规则之前。在我的例子中,把阻塞指令放在
log style combined
之后就解决了这个问题。