apache OpenBSD的httpd守护进程{block}指令不起作用

5hcedyr0  于 2023-08-07  发布在  Apache
关注(0)|答案(1)|浏览(84)

我试图限制访问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"等等,有或没有前导/。没有效果。
可能有什么我不明白的地方,但我不能纠正我的错误。我错过了什么?

anauzrmj

anauzrmj1#

快速回答我自己的问题,从www.example.com获得misc@openbsd.org:根据手册man httpd.conf在位置声明的情况下第一场比赛获胜。为了避免一些更具体的规则被忽视,有必要将它们放在更全球性的规则之前。在我的例子中,把阻塞指令放在log style combined之后就解决了这个问题。

相关问题