Apache 2.4:要求(例如全部拒绝)指令不被遵守

Apache 2.4:要求(例如全部拒绝)指令不被遵守

我在 Ubuntu 20.04 上运行 Apache 2.4.41,无法在我的 VirtualHost 上运行任何 Require 指令。作为最低限度的工作示例,我的 VHost 文件:

<VirtualHost *:80>
        ServerName my.domain.com
        DocumentRoot "/var/www/html/admin"

        <Directory /var/www/html/admin>
               Require all denied
        </Directory>

        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

旨在阻止所有访问,但日志显示:

[authz_core:debug] [pid 340724] mod_authz_core.c(735): [client ***.***.***.***:59008] AH01625: authorization result of <RequireAny>: granted (directive limited to other methods)

我在 Apache 配置树的其他地方看不到对 Require 行为的任何覆盖。例如,/etc/apache2/apache.conf包含:

<Directory />
        Options FollowSymLinks
        AllowOverride None
        Require all denied
</Directory>

<Directory /usr/share>
        AllowOverride None
        Require all granted
</Directory>

<Directory /var/www/>
        Options Indexes FollowSymLinks
        AllowOverride None
</Directory>

我加载的模块是:

Loaded Modules:
 core_module (static)
 so_module (static)
 watchdog_module (static)
 http_module (static)
 log_config_module (static)
 logio_module (static)
 version_module (static)
 unixd_module (static)
 access_compat_module (shared)
 alias_module (shared)
 auth_basic_module (shared)
 authn_core_module (shared)
 authn_file_module (shared)
 authz_core_module (shared)
 authz_host_module (shared)
 authz_user_module (shared)
 autoindex_module (shared)
 cgi_module (shared)
 deflate_module (shared)
 dir_module (shared)
 env_module (shared)
 filter_module (shared)
 headers_module (shared)
 mime_module (shared)
 mpm_prefork_module (shared)
 negotiation_module (shared)
 php7_module (shared)
 proxy_module (shared)
 proxy_http_module (shared)
 remoteip_module (shared)
 reqtimeout_module (shared)
 rewrite_module (shared)
 setenvif_module (shared)
 socache_shmcb_module (shared)
 ssl_module (shared)
 status_module (shared)

apachectl -tapachectl -S给出标准输出。

有人知道我下一步应该去哪里吗?

(提醒:Apache 2.4 不是 Apache 2.2,因此请使用当前术语)

答案1

感谢所有阅读我的问题的人 - 我找到了解决方案并想与大家分享。

我将 Apache2 树移到一边并从存储库重新安装了相关软件包。Require 指令套件现在又能正常工作了,因此我比较了新旧树以查找差异。

我发现一个模糊的指令,其中包含一个 Require all 命令,我已将其放在我的 conf-enabled 目录中,而这竟然是问题的原因。

因此,如果 Apache 指令存在问题,不仅需要检查 apache2.conf 和 vhosts 目录,还需要检查 conf 和 mods 目录!

干杯

相关内容