linux Apache服務器系統(tǒng)安全設置與優(yōu)化
更新時間:2008年07月15日 18:35:53 作者:
結(jié)合,mod_gzip 和緩沖工具等,我們完全可以使一臺配置較低的 PC 有足夠的能力處理各種 HTML/CGI 等的請求。
BrowserMatch命令為特定的客戶程序,設置特殊的參數(shù),以保證對老版本瀏覽器的兼容性,并支持新瀏覽器的新特性。
# SetHandler server-status
# Order deny,allow
# Deny from all
# Allow from .your_domain.com
# SetHandler server-info
# Order deny,allow
# Deny from all
# Allow from .your_domain.com
## Deny from all
# ErrorDocument 403 http://phf.apache.org/phf_...
用于設置訪問控制的設置主要是針對目錄和文件進行設置的,然而也可以針對不同的URL進行訪問控制的設置,這樣就不必擔心ScriptAlias、 Alias是否將路徑設置到了受控制的目錄之外了。針對URL進行控制的語句為 Location語句,這樣不但能對服務器上的文件、CGI提供保護,此外,它還能保護不能找到對應文件,而是由服務器本身提供的特殊功能URL。http://servername/server-s...用于報告當前Apache服務器的狀態(tài),http://servername/server-i...用于報告Apache 服務器的統(tǒng)計信息。與此相關(guān)的設置還有ExtendedStatus參數(shù),可以讓服務器輸出更詳細的的報告。
#ProxyRequests On
# Order deny,allow
# Deny from all
# Allow from .your_domain.com
#ProxyVia On
#CacheRoot "/www/proxy"
#CacheSize 5
#CacheGcInterval 4
#CacheMaxExpire 24
#CacheLastModifiedFactor 0.1
#CacheDefaultExpire 1
#NoCache a_domain.com another_domain.edu joes.garage_sale.com
Apache服務器本身就具備代理的功能,然而這要求加載入mod_proxy模塊。這能使用IfModule語句進行判斷,如果存在mod_proxy模塊,就使用 ProxyRequests打開代理支持。此后的Directory用于設置對Proxy功能的訪問權(quán)限設置,以及用于設置緩沖的各個參數(shù)設置。
虛擬主機
#NameVirtualHost 12.34.56.78:80
#NameVirtualHost 12.34.56.78
# ServerAdmin webmaster@host.some_domain.com
# DocumentRoot /www/docs/host.some_domain.com
# ServerName host.some_domain.com
# ErrorLog logs/host.some_domain.com-error_log
# CustomLog logs/host.some_domain.com-access_log common
缺省設置文件中的這些內(nèi)容是用于設置命名基礎的虛擬主機服務器時使用。其中NameVirtualHost 來指定虛擬主機使用的IP地址,這個IP地址將對應多個 DNS名字,如果Apache使用了Listen 參數(shù)控制了多個端口,那么就可以在這里加上端口號以進一步進行區(qū)分對不同端口的不同連接請求。此后,使用 VirtualHost 語句,使用NameVirtualHost指定的IP地址作參數(shù),對每個名字都定義對應的虛擬主機設置。
虛擬主機是在一臺Web服務器上,可以為多個單獨域名提供Web服務,并且每個域名都完全獨立,包括具有完全獨立的文檔目錄結(jié)構(gòu)及設置,這樣域名之間完全獨立,不但使用每個域名訪問到的內(nèi)容完全獨立,并且使用另一個域名無法訪問其他域名提供的網(wǎng)頁內(nèi)容。
虛擬主機的概念非常有用,因為雖然一個組織可以將自己的網(wǎng)頁掛在具備其他域名的服務器上的下級往址上,但使用獨立的域名和根網(wǎng)址更為正式,易為眾人接受。傳統(tǒng)上,必須自己設立一臺服務器才能達到單獨域名的目的,然而這需要維護一個單獨的服務器,很多小單位缺乏足夠的維護能力,更為合適的方式是租用別人維護的服務器。沒有必要為一個機構(gòu)提供一個單獨的服務器,完全可以使用虛擬主機能力,使服務器為多個域名提供Web服務,而且不同的服務互不干擾,對外就表現(xiàn)為多個不同的服務器。
有兩種設定虛擬主機的方式,一種是基于HTTP 1.0標準,需要一個具備多IP地址的服務器,再配置DNS 服務器,給每個IP地址以不同的域名,最后才能配置Apache的配置文件,使服務器對不同域名返回不同的Web文檔。由于這需要使用額外的IP地址,對每個要提供服務的域名都要使用單獨的IP地址,因此這種方式實現(xiàn)起來問題較多。可以在一個網(wǎng)絡界面上綁定多個IP地址,Linux下需要使用ifconfig的 alias參數(shù)來進行這個配置,但此時會影響網(wǎng)絡性能。
HTTP 1.1標準在協(xié)議中規(guī)定了對瀏覽器和服務器通信時,服務器能夠跟蹤瀏覽器請求的是哪個主機名字。因此可以利用這個新特性,使用更輕松的方式設定虛擬主機。這種方式不需要額外的IP地址,但需要新版本的瀏覽器支持。這種方式已經(jīng)成為建立虛擬主機的標準方式。要建立非IP基礎的虛擬主機,多個域名是不可少的配置,因為每個域名就對應一個要服務的虛擬主機。因此需要更改DNS服務器的配置,為服務器增加多個C NAME選項,如:
linux IN A 192.168.1.64
vhost1 IN CNAME linux
vhost2 IN CNAME linux
基本的設置選項都是為了linux主機設定的,如果要為vhost1和vhost2設定虛擬主機,就要使用VirtualHost語句定義不同的選項,在語句中可以使用配置文件前面中的大部分選項,而可以重新定義幾乎所有的針對服務器的設置。
NameVirtualHost 192.168.1.64
DocumentRoot /www/data
ServerName linux.example.org.cn
DocumentRoot /vhost1
ServerName vhost1.example.org.cn
DocumentRoot /vhost2
ServerName vhost2.example.org.cn
這里需要注意的是,VirtualHost的參數(shù)地址一定要和NameVirtualHost定義的地址相一致,必須保證所有的值嚴格一致,Apache服務器才承認這些定義是為這個IP地址定義的虛擬主機。
此外,定義過NameVirtualHost之后,那么對這個IP地址的訪問都被區(qū)分不同的虛擬主機進行處理,而對其他IP地址的訪問,例如127.0.0.1,才應用前面定義的缺省選項。
另外一些加速方法
1、 Web 頁面和 CGI 頁面采用了瀏覽器緩沖技術(shù)。具體的方法可以參考附錄一:采用 mod_gzip 加速Apache
2、 不要讓 X Windows 運行在你的 Web 服務器上,用 Ctrl-Alt-Backspace 關(guān)閉 X 。
3、 在 CGI 腳本中:
文件 I/O:打開的文件數(shù)目越少越好。
Shell 命令:采用全路徑來調(diào)用 shell 命令。
在Web 頁面目錄中,不要讓文件數(shù)超過 1000 個,文件越多花費在定位上的時間也越多。
4、 在 Web 服務器上的圖片越少越好,保證每個圖片都經(jīng)由圖片壓縮器運行。
5、 應該配置盡量多的內(nèi)存,內(nèi)存的大小對系統(tǒng)性能影響非常大。
6、 可以用strace命令調(diào)試調(diào)用。
當你不確定httpd.conf里的設置更改對進程的影響時,strace或許能奏效,通過觀察輸出的行數(shù),可以判斷對一個固定頁面訪問時需要的調(diào)用數(shù)。如:
#ps –ef|grep http
#strace –p http_pid
accept(18, 0xFFBEFA50, 0xFFBEFA74, 1) = 3
fcntl(24, F_SETLKW, 0x001D0E10) = 0
sigaction(SIGUSR1, 0xFFBEF908, 0xFFBEF98 = 0
getsockname(3, 0xFFBEFA60, 0xFFBEFA74, 1) = 0
setsockopt(3, 6, 1, 0xFFBEF9C4, 4, 1) = 0
read(3, " G E T / c a s e i n c".., 4096) = 590
sigaction(SIGUSR1, 0xFFBED800, 0xFFBED880) = 0
time() = 1043377552
stat("/docroot/osc-new/www/caseincident/listCase.php", 0x0022BF5 = 0
umask(077) = 0
umask(0) = 077
setitimer(ITIMER_PROF, 0xFFBEF628, 0x00000000) = 0
sigaction(SIGPROF, 0xFFBEF4F8, 0xFFBEF57 = 0
sigprocmask(SIG_UNBLOCK, 0xFFBEF618, 0x00000000) = 0
getsockopt(6, 65535, 8192, 0xFFBE67B0, 0xFFBE67AC, 0) = 0
setsockopt(6, 65535, 8192, 0xFFBE67B0, 4, 0) = 0
setitimer(ITIMER_PROF, 0xFFBEF788, 0x00000000) = 0
sigaction(SIGUSR1, 0xFFBEF908, 0xFFBEF98 = 0
read(3, 0x001E5BC0, 4096) (sleeping...)
附錄一、采用 mod_gzip 加速Apache
說明:本附錄為全文引用。
我們知道 mod_gzip 是用來在服務器端把客戶請求的內(nèi)容壓縮后發(fā)送給客戶端的一個 Apache 模塊。本站的 Zope 通過 FastCGI 來實現(xiàn)和 Apache 的結(jié)合,Apache 是解析 HTML 頁面的服務程序。安裝好 mod_gzip 后就即能壓縮普通靜態(tài)頁面也能壓縮 Zope 文檔。
一、安裝
http://www.hyperspacecommu...
頁面上有 mod_gzip 的二進制碼版本和源碼下載。如果你使用前者的話,直接把文件拷貝到 Apache Home 的 libexec 目錄下就可以了。下載 mod_gzip.c 后,如果你的 Apache 用 DSO 模式安裝的話,用下面簡單的命令就可以安裝了:
# /www/bin/apxs -i -a -c mod_gzip.c
二、配置
安裝完畢以后把下列配置加入httpd.conf :
# mod_gzip 配置
LoadModule gzip_module libexec/mod_gzip.so
AddModule mod_gzip.c
mod_gzip_on Yes
mod_gzip_minimum_file_size 1002
mod_gzip_maximum_file_size 0
mod_gzip_maximum_inmem_size 60000
mod_gzip_item_include mime "application/x-httpd-php"
mod_gzip_item_include mime "text/*"
# 壓縮 Zope 的內(nèi)容:
mod_gzip_item_include file "[^.]*$"
mod_gzip_item_include mime "httpd/unix-directory"
mod_gzip_dechunk Yes
mod_gzip_temp_dir "/tmp"
mod_gzip_keep_workfiles No
mod_gzip_item_include file ".php$"
mod_gzip_item_include file ".txt$"
mod_gzip_item_include file ".html$"
mod_gzip_item_exclude file ".css$"
mod_gzip_item_exclude file ".js$"
并添加下面的行:
LogFormat "%h %l %u %t "%r" %>s %b "%{Referer}i" "%{User-Agent}i" mod_gzip: %{mod_gzip_compression_ratio}npct." mod_gzip
把對應虛擬主機配置中的日志文件參數(shù)修改為 mod_gzip
三、壓縮效果
這樣,我們得到類似以下的日志文件:
61.169.41.13 - - [02/Mar/2002:01:24:29 -0500] "GET /pipermail/freelamp/2002-March/000026.html HTTP/1.1" 200 72848 "http://www.freelamp.com/pipermail/freelamp/2002-March/subject.html" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; Q312461; NetCaptor 6.5.0)" mod_gzip: 54pct.
61.169.41.13 - - [02/Mar/2002:01:24:52 -0500] "GET /new/publish/1003233602/index_html HTTP/1.1" 200 4304 "http://www.freelamp.com/new/publish/search?subject=Zope&op=articles" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; Q312461; NetCaptor 6.5.0)" mod_gzip: 65pct.
61.169.41.13 - - [02/Mar/2002:01:24:53 -0500] "GET /new/publish/global_css HTTP/1.1" 200 629 "http://www.freelamp.com/new/publish/1003233602/index_html" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; Q312461; NetCaptor 6.5.0)" mod_gzip: 73pct.
61.169.41.13 - - [02/Mar/2002:01:24:54 -0500] "GET /new/publish/Images/sitetitle_img HTTP/1.1" 304 0 "http://www.freelamp.com/new/publish/1003233602/index_html" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; Q312461; NetCaptor 6.5.0)" mod_gzip: 0pct.
61.169.41.13 - - [02/Mar/2002:01:26:21 -0500] "GET /new/publish/index_html HTTP/1.1" 200 7317 "http://www.freelamp.com/new/publish/1003233602/index_html" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; Q312461; NetCaptor 6.5.0)" mod_gzip: 80pct.
61.169.41.13 - - [02/Mar/2002:01:26:22 -0500] "GET /new/publish/global_css HTTP/1.1" 200 629 "http://www.freelamp.com/new/publish/index_html" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; Q312461; NetCaptor 6.5.0)" mod_gzip: 73pct.
61.169.41.13 - - [02/Mar/2002:01:26:24 -0500] "GET /new/publish/TopicImages/Tutorial HTTP/1.1" 304 0 "http://www.freelamp.com/new/publish/index_html" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; Q312461; NetCaptor 6.5.0)" mod_gzip: 0pct.
61.169.41.13 - - [02/Mar/2002:01:26:24 -0500] "GET /new/publish/LinkImages/jsp001_img HTTP/1.1" 304 0 "http://www.freelamp.com/new/publish/index_html" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; Q312461; NetCaptor 6.5.0)" mod_gzip: 0pct.
我們看到 mod_gzip 已經(jīng)對 .html 和那些沒有點的文件作了壓縮,壓縮率達到了 70-80%。但是,mod_gzip 對圖片文件不作壓縮。
四、總結(jié)
結(jié)合,mod_gzip 和緩沖工具等,我們完全可以使一臺配置較低的 PC 有足夠的能力處理各種 HTML/CGI 等的請求。
相關(guān)文章
Linux系統(tǒng)修改環(huán)境變量的常用方法
這篇文章主要給大家介紹了Linux系統(tǒng)修改環(huán)境變量的常用方法,文中通過代碼示例給大家介紹的非常詳細,對大家的學習或工作有一定的幫助,需要的朋友可以參考下2024-02-02VmWare安裝centos7無法上網(wǎng)的解決方法
這篇文章主要為大家詳細介紹了VmWare安裝centos7無法上網(wǎng)的解決方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下2018-10-10Ubuntu系統(tǒng)下用Crontab命令定時執(zhí)行PHP文件詳解
這篇文章主要給大家介紹了在Ubuntu系統(tǒng)下用Crontab命令定時執(zhí)行PHP文件的相關(guān)資料,文中介紹的非常詳細,對大家具有一定的參考學習價值,需要的朋友們下面來一起看看吧。2017-06-06Linux下9種優(yōu)秀的代碼比對工具推薦小結(jié)
這篇文章主要介紹了Linux下9種優(yōu)秀的代碼比對工具推薦小結(jié),不僅有命令行工具,還有 GUI 界面工具,讓你輕松進行代碼比對,感興趣的可以一起來了解一下2020-06-06詳解Linux 服務管理兩種方式service和systemctl
systemd是Linux系統(tǒng)最新的初始化系統(tǒng)(init),作用是提高系統(tǒng)的啟動速度,盡可能啟動較少的進程,盡可能更多進程并發(fā)啟動。這篇文章主要介紹了Linux 服務管理兩種方式service和systemctl,需要的朋友可以參考下2019-09-09