Apache-2.4

Apache 2.4:要求(例如全部被拒絕)指令未得到遵守

  • January 8, 2022

我在 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 所以希望使用目前的術語)

感謝所有閱讀我的問題的人 - 我找到了一個解決方案並認為我會分享它。

我將 Apache2 樹移到一側並從儲存庫重新安裝了相關軟體包。Require 指令套件現在再次起作用,因此我比較了新舊樹以找出差異。

我發現了一個晦澀的指令,其中包含我放置在啟用 conf 的目錄中的 Require all 命令,結果證明這是問題的原因。

因此,如果 Apache 指令存在問題,值得檢查的不僅僅是 apache2.conf 和 vhosts 目錄——還要檢查 conf 和 mods 目錄!

乾杯

引用自:https://serverfault.com/questions/1089331