为什么 mod_jk 会绕过 Apache 授权?

为什么 mod_jk 会绕过 Apache 授权?

由于从 Apache 2.2 切换,许多 JkMount(jk-status 除外)的授权都会被绕过。如果我取消浏览器密码弹出窗口,就会出现 401 页面。正如我所料,它不是来自 Apache 的页面,而是来自 JBoss 的页面,它不应该被允许与 JBoss 对话。(我发现这是因为未经授权的用户正在与 JBoss 对话。)

在接收端,我们同时拥有 JBoss 4 和 Wildfly 7。这两者都带有“Apache/2.4.3 (Unix) mod_jk/1.2.37”和“Apache/2.4.10 (Unix) mod_jk/1.2.40”。配置总是像

<Location /XYZ/*>
    JkMount XYZ
    AuthType basic
    AuthUserFile conf/passwd/XYZ
    AuthName "XYZ security"
    Require valid-user
</Location>

我甚至遇到过这样的情况:相同的设置(工作器定义、<Location>文件权限和内容)在 2.4.3 上有效,但在 2.4.10 上无效。对于其他 JkMounts,两个版本的行为都不正确。如果我提高调试级别,我看不到它如何解析这一点。当我调用 URL 时,它说没有指令保护它。

答案1

事实证明,JkMount 的嵌套 1-arg 语法非常无用,因为它需要尾随通配符,而 Location 无法理解它。有效的方法是将其拉出:

JkMount /XYZ/* XYZ
<Location /XYZ>

相关内容