如果我將虛擬主機設定檔直接包含在「sites-enabled」資料夾中會發生什麼?

如果我將虛擬主機設定檔直接包含在「sites-enabled」資料夾中會發生什麼?

我目前正在研究 Apache 虛擬主機,對其配置有一些困惑。

我在該資料夾中建立了一個虛擬主機文件sites-available,並以 root 身分使用命令啟用了相應的網站a2ensite example.com.conf 。我注意到這樣做時會在sites-enabled資料夾中建立一個符號連結。

為了更徹底地理解該行為,我嘗試將example.com.conf檔案直接儲存到 中sites-enabled,避免透過符號連結進行間接尋址。重新啟動 Apache 後,我驚訝地發現虛擬主機繼續正常運作。

如果我example.com.conf僅將文件存儲在 中sites-enabled,而不存儲在sites-available文件夾中並使用符號鏈接,這會導致任何問題嗎?

答案1

此資料夾結構完全與可管理性有關。雖然將所有模組和虛擬主機配置添加到一個檔案中是完全可以的httpd.conf,但修改起來會變得漫長而棘手。因此,例如在 Debian 中,已使用通配符 include 將配置分隔為多個檔案:

# Include generic snippets of statements
IncludeOptional conf-enabled/*.conf

# Include the virtual host configurations:
IncludeOptional sites-enabled/*.conf

這使得所有匹配路徑的內容都sites-enabled/*.conf被添加到配置中,對於 Apache HTTPd 來說,它是文字檔案還是符號連結並不重要。從這個角度來看,文件<VirtualHost>中是否有區塊或只是其他一些 Apache 配置都無關緊要。也完全有可能擁有example.com.conf包含配置example.net等的檔案。

您將面臨的非常規配置問題與缺乏可管理性有關:

  • 您將無法使用a2ensite/啟用或停用虛擬主機a2dissite

    # a2dissite example.com
    ERROR: Site example.com does not exist!
    
    • 官方文件(手冊頁)變得毫無用處。

    • 您無法輕鬆地暫時停用網站。例如,一個包羅萬象的虛擬主機可以輕鬆建立一個正在維修網站停用更新時顯示的頁面。

  • 管理同一台伺服器的其他人可能曾經使用ln -srm而不是這些官方命令。在嘗試暫時停用該網站時,他們可能會意外刪除網站。

  • 沒有人知道您沒有遵循正常做法。幾個月後你也會忘記它。那時,您將在 Serverfault 上提出一個新問題,以了解為什麼遵循文件或教學不再適用於您的設定。

相關內容