我在 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 -t
并apachectl -S
给出标准输出。
有人知道我下一步应该去哪里吗?
(提醒:Apache 2.4 不是 Apache 2.2,因此请使用当前术语)
答案1
感谢所有阅读我的问题的人 - 我找到了解决方案并想与大家分享。
我将 Apache2 树移到一边并从存储库重新安装了相关软件包。Require 指令套件现在又能正常工作了,因此我比较了新旧树以查找差异。
我发现一个模糊的指令,其中包含一个 Require all 命令,我已将其放在我的 conf-enabled 目录中,而这竟然是问题的原因。
因此,如果 Apache 指令存在问题,不仅需要检查 apache2.conf 和 vhosts 目录,还需要检查 conf 和 mods 目录!
干杯