微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决OpenBSD 的 httpd 守护进程 {block} 指令不起作用

我试图限制对 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 中,我放置了一些不用于直接查看的 html。 对于最后一个 location 指令,我希望 http://10.0.1.222/SUBFOLDER/01.html 之类的请求会被 403 代码阻止,但我无法实现。

虽然 http://10.0.1.222/SUBFOLDER/ 返回 access denied,但在 SUBFOLDER 中请求任何正确的 html 文档名称都会为该请求提供服务,没有任何抱怨。

如果 string: /SUBFOLDER/* 是(如我所想)正确的 shell glob,它应该匹配字符串 /SUBFOLDER/ 本身+之后给出的任何字符串,那么像 http://10.0.1.222/SUBFOLDER/01.html 这样的请求应该返回代码 { {1}}。但它不起作用。 我尝试了很多组合:403"/SUBFOLDER/*" 等等,有或没有前导 "/SUBFOLDER/*.html"。没有效果

可能有一些我不明白的地方,但我无法调试我的错误。 我错过了什么?

解决方法

从misc@openbsd.org 获得我自己问题的快速答案:根据手册man httpd.conf,如果位置声明第一场比赛获胜。为了避免忽略一些更具体的规则,有必要将它们放在更全局的规则之前。 就我而言,在 log style combined 解决问题后立即放置阻塞指令。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。