
我最近在 Apache 2.4 安裝中更改了使用 Event MPM,以及 PHP-FPM 和 FastCGI 代理,我希望這不是我的問題的原因。我也開始使用基於名稱的 VirtualHost 指令,儘管我沒有多個網站,Linux(特別是 CentOS 7)只是一個在 NAT 後面運行的虛擬機器。
在這些更改之前,除了虛擬機器仍然在 NAT 後面運行之外,它工作正常(至少我相信是這樣,我將在稍後解釋),但「需要 IP」現在困擾著我。
<VirtualHost *:80>
DocumentRoot /home/website/public_html
<Directory /home/website>
Allow from all
Options +Indexes
AllowOverride All
</Directory>
<Location />
# Allow Internal IPs
Require ip 10.0.0.0/8
Require ip 172.16.0.0/12
Require ip 192.168.0.0/16
Require ip 0.0.0.0/8
Require ip 127.0.0.0/8
# Allow Company IPs
Require forward-dns broadband1.company.com
Require forward-dns broadband2.company.com
# Allow all IPs (comment it if disallowed)
Require all granted
</Location>
</VirtualHost>
所以當我把網頁檔案放在該public_html
資料夾下時,效果很好。傑出的!但後來,我安裝了 phpMyAdmin 並phpMyAdmin.conf
在 下進行了修改/etc/httpd/conf.d/
,如下所示:
<Directory /usr/share/phpMyAdmin/>
AddDefaultCharset UTF-8
<IfModule mod_authz_core.c>
# Apache 2.4
<RequireAny>
# Allow Internal IPs
Require ip 10.0.0.0/8
Require ip 172.16.0.0/12
Require ip 192.168.0.0/16
Require ip 0.0.0.0/8
Require ip 127.0.0.0/8
# Allow Company IPs
Require forward-dns broadband1.company.com
Require forward-dns broadband2.company.com
# Was here by default
Require ip 127.0.0.1
Require ip ::1
</RequireAny>
</IfModule>
<IfModule !mod_authz_core.c>
# Apache 2.2
Order Deny,Allow
Deny from All
Allow from 127.0.0.1
Allow from ::1
</IfModule>
</Directory>
與上面的 VirtualHost 不同,這次我沒有授予所有 IP 位址存取 phpMyAdmin 的權限,因為如果它們可以暴力破解資料庫,那將是極其危險的。
同樣適用於/server-status
和/server-info
,只有特定的 IP 可以訪問此類頁面,當然不能Require all granted
。但在我們開始使用 VirtualHost 後,他們可以訪問此類頁面,因此 phpMyAdmin.conf 下的“需要 IP”部分以及我為 /server-status 和 /server-info 創建的命令無法正常工作。
然後我好奇地嘗試並評論“要求所有已授予”,httpd.conf
看看會發生什麼,然後 phpMyAdmin 按預期無法訪問。所以看起來「需要 ip」僅基於虛擬主機。然而,VirtualHost 下沒有提到其他 3 個頁面,所以我不知道我做錯了什麼。
我的問題是:如何讓 phpMyAdmin 和 /server-status 和 /server-info 的「需要 ip」再次運作?先感謝您的幫忙!