linux Apache服務器系統安全設置與優化
2024-08-27 18:22:54
供稿:網友
結合,mod_gzip 和緩沖工具等,我們完全可以使一臺配置較低的 PC 有足夠的能力處理各種 HTML/CGI 等的請求。 Apache服務器的設置文件位于/usr/local/apache/conf/目錄下,傳統上使用三個配置文件httpd.conf, access.conf和srm.conf, 來配置Apache服務器的行為。httpd.conf提供了最基本的服務器配置,是對守護程序 httpd如何運行的技術描述;srm.conf是服務器的資源映射文件,告訴服務器各種文件的MIME類型,以及如何支持這些文件; access.conf用于配置服務器的訪問權限,控制不同用戶和計算機的訪問限制;這三個配置文件控制著服務器的各個方面的特性,因此為了正常運行服務器便需要設置好這三個文件。
除了這三個設置文件之外,Apache還使用mime.types文件用于標識不同文件對應的MIME類型, magic文件設置不同MIME類型文件的一些特殊標識,使得Apache 服務器從文檔后綴不能判斷出文件的MIME 類型時,能通過文件內容中的這些特殊標記來判斷文檔的MIME類型。 [iaspec@www conf]$ pwd /usr/local/apache/conf [iaspec@www conf]$ ls access.conf httpd.conf.OLD magic.default srm.conf access.conf.default httpd.conf.SAVE mime.types srm.conf.default httpd.conf magic mime.types.default
新版本的Apache將原來httpd.conf、srm.conf與 access.conf中的所有配置參數均放在了一個配置文件 httpd.conf中,只是為了與以前的版本兼容的原因(使用這三個設置文件的方式來源于NCSA-httpd),才使用三個配置文件。而提供的 access.conf和srm.conf文件中沒有具體的設置。
由于在新版本的Apache中,所有的設置都被放在了httpd.conf中,因此只需要調整這個文件中的設置。本文基于redhat 7.2 下的httpd.conf為例,解釋Apache服務器的各個設置選項,當然,其配置方法可擴展到幾乎所有unix系統。
雖然Apache提供設置的參數很多,基本上這些 參數都很明確,也可以不加改動運行Apache服務器。但如果需要調整Apache服務器的性能,以及增加對某種特性的支持,就需要了解這些設置參數的含義。
需要指出的是,除了操作系統的性能調整之外,Apache 服務器本身的缺省配置絕不是最優化和最高效的,而是要適應幾乎所有種類操作系統、所有種類硬件下的設置,多平臺的軟件不可能為特定平臺和特定硬件提供最優化的缺省配置。因此要使用Apache的時候,性能調整是必不可少的。
httpd.conf基本配置與性能優化的關系
httpd.conf中首先定義了一些httpd守護進程運行時需要的參數,來決定其運行方式和運行環境。 下面就httpd.conf中的配置參數的定義及其各種配置、優化方法進行逐項說明:
(優化沒有捷徑,必須首先清楚各配置的含義)
ServerType standalone
ServerType定義服務器的啟動方式,缺省值為獨立方式 standalone,httpd 服務器將由其本身啟動,并駐留在主機中監視連接請求。在Linux下將在啟動文件 /etc/rc.d/rc.local/init.d/apache中自動啟動Web服務器,這種方式是推薦設置。
啟動Apache服務器的另一種方式是inet方式,使用超級服務器inetd監視連接請求并啟動服務器。當需要使用inetd啟動方式時,便需要更改為這個設置,并屏蔽 /etc/rc.d/rc.local/init.d/apache文件,以及更改/etc/inetd.conf并重起 inetd,那么Apache就能從inetd中啟動了。
兩種方式的區別是獨立方式是由服務器自身管理自己的啟動進程,這樣在啟動時能立即啟動服務器的多個副本,每個副本都駐留在內存中,一有連接請求不需要生成子進程就可以立即進行處理,對于客戶瀏覽器的請求反應更快,性能較高。而 inetd方式要由inetd發現有連接請求后才去啟動http服務器,由于inetd 要監聽太多的端口,因此反應較慢、效率較低,但節約了沒有連接請求時Web服務器占用的資源。因此inetd方式只用于偶爾被訪問并且不要求訪問速度的服務器上。事實上inetd方式不適合http的突發和多連接的特性,因為一個頁面可能包含多個圖象,而每個圖象都會引起一個連接請求,即使雖然訪問人數造成教少,但瞬間的連接請求并不少,這就受到inetd性能的限制,甚至會影響由inetd啟動的其他服務器程序。