找出是否可以從網站使用中禁用 Apache 模組
我可以使用以下命令查看 apache 載入的核心和其他模組的列表:
$ apache2ctl -t -D DUMP_MODULES Loaded Modules: core_module (static) mpm_prefork_module (static) http_module (static) so_module (static) auth_basic_module (shared) auth_digest_module (shared)
為了優化伺服器的性能(
Apache
本質上節省每個執行緒的記憶體),我想禁用未使用的模組。文件在下一頁Apache
提供了有關此模組的資訊。大多數時候,為每個模組提供的資訊足以決定我是否應該禁用一個模組。例如,我知道我不使用
LDAP
身份驗證,所以我可以安全地禁用authnz_ldap_module
.然而,對於某些模組來說,它有點不那麼明顯。例如,對於無法解決
mime_magic
的情況,該模組被用作“第二道防線” ,這在理論上無法確定,因為它取決於 Apache 將提供哪些文件。mod_mime
Apache
問:有沒有辦法將有效用於處理請求的模組列表記錄到文件中?如果我可以記錄這些資訊,我會讓 Web 伺服器執行一段時間,然後獲取用於處理同時收到的所有請求的模組列表,並禁用那些未出現在該列表中的模組。
我不相信有一個通用的解決方案,但仍然有一些選擇。一些模組(例如,
mod_rewrite
)有自己的日誌記錄工具,但您必須閱讀每個模組的文件才能找到。列出的任何模組static
都已編譯,除非您重新編譯 Apache,否則無法禁用。剩下的,您可以嘗試三件事:搜尋指令前綴、啟用調試日誌記錄或有選擇地逐個模組禁用並重新啟動。對於大多數模組,指令共享一個公共前綴。對於 HTTP 身份驗證模組
basic
和digest
,您可以通過使用 過濾配置文件來判斷您是否正在使用它們grep
。如果您正在做虛擬主機,您可能可以執行以下操作:cd /etc/apache2/sites-enabled grep Auth *
如果您看到類似
AuthType basic
or的內容AuthType digest
,那麼您需要這些模組中的一個或兩個。否則,禁用它們應該是安全的。其他模組也類似:僅當指令在某處發出mime_magic
時才啟用。MimeMagicFile
如果在此之後仍有不確定的模組,您可以嘗試啟用
LogLevel debug
並檢查日誌。如果您看到某個模組的一些輸出,那麼您可以判斷該模組正在使用中。您甚至可以為特定模組設置 LogLevel 調試。不過,這與您詢問的內容略有不同,因為如果您沒有看到任何輸出,並不一定意味著模組未在使用中。(也許它根本不會產生調試輸出。)最後,在許多情況下,您可以嘗試禁用模組並執行
apache2ctl configtest
. 如果由於未載入模組而無法辨識指令,則會導致錯誤。