這是一個標準的 Apache 設定需求。為了達成你的目標,我們需要在 <VirtualHost> 層級限制主機名稱(ServerName),並在 <Directory> 層級限制存取來源。

你可以將設定修改如下:

Apache

<VirtualHost *:80>
    # 1. 只接受特定的網域名稱
    ServerName note.findrichard.com
    
    DocumentRoot /var/www/wordpress

    <Directory /var/www/wordpress>
        Options FollowSymLinks
        # 建議將 AllowOverride 設為 All 以確保 WordPress 的 .htaccess 正常運作
        AllowOverride Limit Options FileInfo
        DirectoryIndex index.php

        # 2. 存取控制:只允許來自本機與代理伺服器
        <RequireAny>
            Require ip 192.168.116.73
            Require local
        </RequireAny>
    </Directory>

    <Directory /var/www/wordpress/wp-content>
        Options FollowSymLinks
        <RequireAny>
            Require ip 192.168.116.73
            Require local
        </RequireAny>
    </Directory>
</VirtualHost>

關鍵修改說明:

  • ServerName note.findrichard.com: 這確保了當請求進入伺服器時,Apache 只會將針對該網域的請求交給這個 VirtualHost 處理。如果有人嘗試用 IP 直接存取,且這是唯一的設定檔,他們可能會看到錯誤或預設頁面(取決於你的預設主機設定)。
  • <RequireAny> 區塊:
    • Require ip 192.168.116.73: 明確允許你的代理伺服器。
    • Require local: 允許伺服器自身存取(這對某些內部 cron job 或健康檢查很有幫助)。
  • 安全性提醒: 如果你的 WordPress 位於代理伺服器(Proxy)後方,建議安裝並啟用 mod_remoteip 模組,這樣 WordPress 的日誌才能記錄到真實訪客的 IP,而不是永遠只顯示 192.168.116.73

修改後的步驟:

執行 sudo systemctl restart apache2 (或 httpd) 套用變更。

儲存設定檔。

執行 sudo apachectl configtest 檢查語法。

Comments

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *