足彩总进球数二三球足彩总进球数二三球

在LINUX下用Apache構建WEB服務器



作者:    文章來源:
發布日期:2006年06月14日
Apache源于NCSAhttpd服務器,經過多次修改,成為世界上最流行的Web服務器軟件之一。Apache取自“a
patchy server”的讀音,意思是充滿補丁的服務器,因為它是自由軟件,所以不斷有人來為它開發新的功能、新的特性、修改原來的缺陷。Apache的特點是簡單、速度快、性能穩定,并可做代理服務器來使用。


本來它只用于小型或試驗Internet網絡,后來逐步擴充到各種Unix系統中,尤其對Linux的支持相當完美。Apache有多種產品,可以支持SSL技術,支持多個虛擬主機。Apache是以進程為基礎的結構,進程要比線程消耗更多的系統開支,不太適合于多處理器環境,因此,在一個Apache
Web站點擴容時,通常是增加服務器或擴充群集節點而不是增加處理器。到目前為止Apache仍然是世界上用的最多的Web服務器,市場占有率達60%左右。世界上很多著名的網站如Amazon.com、Yahoo!、W3
Consortium、Financial Times等都是Apache的產物,它的成功之處主要在于它的源代碼開放、有一支開放的開發隊伍、支持跨平臺的應用(可以運行在幾乎所有的Unix、Windows、Linux系統平臺上)以及它的可移植性等方面。


Apache的誕生極富有戲劇性。當NCSA WWW服務器項目停頓后,那些使用NCSA WWW服務器的人們開始交換他們用于該服務器的補丁程序,他們也很快認識到成立管理這些補丁程序的論壇是必要的。就這樣,誕生了Apache
Group,后來這個團體在NCSA的基礎上創建了Apache。

Apache的主要特征是:

  • 可以運行上所有計算機平臺;
  • 支持最新的HTTP 1.1協議;
  • 簡單而強有力的基于文件的配置;
  • 支持通用網關接口CGI;
  • 支持虛擬主機;
  • 支持HTTP認證;
  • 集成Perl腳本編程語言;
  • 集成的代理服務器;
  • 具有可定制的服務器日志;
  • 支持服務器端包含命令(SSI)
  • 支持安全Socket層(SSL)
  • 用戶會話過程的跟蹤能力;
  • 支持FastCGI;
  • 支持Java Servlets。



安裝Apache

下面我們就開始漫漫征服Apache之旅,通過循序漸進的需求實例,一步步地學習使用Apache,從入門到精通。


系統需求運行Apache不需要太多的計算資源。它在有6-10MB硬盤空間和8MB RAM的Linux系統上運行得很好。然而,只運行Apache可能不是你想做的事情。更可能的是,你想運行Apache來提供WWW服務、啟動CGI進程以及充分利用所有WWW能夠提供的令人驚奇的功能。在這種情況下,你需要提供反映負載要求的額外的磁盤空間和內存空間。也就是說,如果僅僅是啟動WWW服務并不需要太多的系統資源,但是想要能為大量的客戶提供服務就需要更多的系統資源。


你可以通過以下三種方法安裝Apache服務器。

1.如果你安裝的Linux版本中帶用Apache的話,就在選擇所要安裝的服務器的時候,將httpd這個服務選上,Linux安裝程序將自動完成Apache的安裝工作,并做好基本的配置。


2.使用可執行文件軟件包,這比較適合那些對編譯工作不是太熟悉的初級用戶,因為它相對比較簡單。

下載軟件包apache_1.2.4.e.tar.gz


tar xvzf apache_1.2.4.e.tar.gz

這就完成了安裝工作,簡單吧!

如果你使用的是RedHat
Linux的話,你也可以下載apache_1.2.4.rpm軟件安裝包,然后使用rpm -ivh   apache_1.2.4.rpm命令安裝。


3.如果你想把Apache服務器充分利用起來的話,就一定要自己編譯Apache定制其功能。下載包含Apache源代碼的軟件包apache_1.2.4.tar.gz;
然后用tar命令將它解開; 將當前目錄改變為Apache源代碼發行版的src目錄; 將配置樣本文件(Configuration.tmpl)復制為Configuration文件;


編輯Configuration文件中的配置選項:






Makefile配置選項:一些編譯選項:

"CC="一行指定用什么編譯軟件編譯,一般為"CC=gcc";

如果需要將額外的標志(參數)指定給C編譯軟件,可以使用:

EXTRA_CFLAGS=

EXTRA_LFLAGS=

如果系統需要特殊的庫和包含文件,可以在這里指定它們:

EXTRA_LIBS=

EXTRA_INCLUDES=

如果你要改變代碼優化設置的話,你須將下面一句去掉注釋,然

后改成你所需要的值:

#OPTIM=-O2

Rule配置選項:用來決定需要什么功能,一般情況下無需改變。

??榕渲茫耗?槭茿pache的組成部分,它為Apache內核增加新功能。通過使用??榕渲?,可以自定義在Apache服務器中需要什么功能,這個部分也是Apache靈活性的表現。??榕渲瞇腥縵濾荊?


AddModule modules/standard/mod_env.o

如果你需要Apache服務器具備什么功能,就將那個??橛肁ddModule語句加到配置文件Configuration中去。

下表列出了Apache的??楣δ埽?br>
??槊?功能 缺省

mod_access 提供基于主機的訪問控制命令 y

mod_actions 能夠運行基于MIME類型的CGI腳本或HTTP請求方法 y

mod_alias 能執行URL重定向服務 y

mod_asis 使文檔能在沒有HTTP頭標的情況下被發送到客戶端 y

mod_auth 支持使用存儲在文本文件中的用戶名、口令實現認證 y

mod_auth_dbm 支持使用DBM文件存儲基本HTTP認證 n

mod_auth_mysql 支持使用MySQL數據庫實現基本HTTP認證 n

mod_auth_anon 允許以匿名方式訪問需要認證的區域 y

mod_auth_external支持使用第三方認證 n

mod_autoindex 當缺少索引文件時,自動生成動態目錄列表 y

mod_cern_meta 提供對元信息的支持 n

mod_cgi 支持CGI y

mod_dir 能夠重定向任何對不包括尾部斜杠字符命令的請求 y

mod_env 使你能夠將環境變量傳遞給CGI或SSI腳本 n

mod_expires 讓你確定Apache在服務器響應請求時如何處理Expires y

mod_headers 能夠操作HTTP應答頭標 y

mod_imap 提供圖形映射支持 n

mod_include 使支持SSI n

mod_info 對服務器配置提供了全面的描述 y

mod_log_agent 允許在單獨的日志文件中存儲用戶代理的信息 n

mod_log_config 支持記錄日志 y

mod_log_referer 提供了將請求中的Referer頭標寫入日志的功能 n

mod_mime 用來向客戶端提供有關文檔的元信息 y

mod_negotiation 提供了對內容協商的支持 y

mod_setenvif 使你能夠創建定制環境變量 y

mod_speling 使你能夠處理含有拼寫錯誤或大小寫錯誤的URL請求 n

mod_status 允許管理員通過WEB管理Apache y

mod_unique_id 為每個請求提供在非常特殊的條件下保證是唯一的標識 n

在src目錄下執行:". /configure";



編譯Apache:執行命令"make";根據機器性能的不同,經歷一段5-30分鐘的編譯,就大功告成了。將編譯好的可執行文件httpd復制到/etc/httpd/bin目錄下;將Apache發行版的配置文件:access.conf、httpd.conf、mime.types、srm.conf文件復制到/etc/httpd/conf目錄下。到此為止,安裝完成。


一些說明

在Red Hat Linux 6.0中,Apache將自己的所有配置文件和日志文件放在了"/etc/httpd"目錄下,其中"/etc/httpd/conf"下為配置文件,"/etc/httpd/log"下為日志文件。


同時,它將建立"/home/httpd"目錄,并在其下建立三個子目錄:"html/":在這個目錄下存放HTML(主頁)文件;"cgi-bin/":在這個目錄下可以存放一些CGI程序;"icons/":在這個目錄下是服務器自帶的一些圖標。


配置Apache基礎篇,讓WWW服務器跑起來

Apache服務器軟件的配置文件主要有:"access.conf":用于設置系統中的存取方式和環境;"httpd.conf":用于設置服務器啟動的基本環境;"srm.conf":主要用于做文件資源上的設定;"mime.type":記錄Apache服務器所能識別的MIME格式。


在具體講解之前,我們必須告訴大家,Apache已經在安裝時就采用了一系列的缺省值,已經讓WWW服務器跑起來了。你只需要將裝上Linux+Apache的主機聯入Internet,然后將主頁存放到"/home/httpd"目錄下即可。


下面介紹一些最主要的配置選項的含義,以便大家用最小的精力、最小的配置準備好服務器。

httpd.conftpd.conf是主配置文件。它告訴服務器將如何運行。


一、最重要的配置選項ServerType standalone | inetd

這個配置選項指定如何運行WEB服務器。Apache可以使用兩種方法來運行服務器:standalone(獨立的)和inetd(由inetd運行的)。standalone參數表示WEB服務進程以一個單獨的守候進程的方式在后臺偵聽是否有客戶端的請求,如果有就生成一個子進程來為其服務。inetd參數表示WEB服務不是以一個單獨的守候進程的形式支持。而是由Inetd這個超級服務器守候進程進行代勞,當它收到一個客戶端的WEB服務請求的時候,再啟動一個WEB服務進程為其服務。從功能的角度看,這兩種方法幾乎是相同的。但它們之間實際有很大區別,區別在于服務器的性能。一個由inted運行的服務器進程在它結束對請求服務的同時立刻退出。而在standalone模式下,子WWW服務器進程在退出之前要掛起一段時間,這就給它們提供了機會,可以重新用來服務新的請求。


在standalone模式下,不存在對每個請求啟動新進程的開銷,所以它的效率更高;而inetd模式被認為比standalone模式更具安全性。


standalone模式:

此種模式下,WWW服務器偵聽特定端口的連接請求。當客戶機發出到特定端口地址的連接請求時,主服務器進程啟動子WWW服務進程來服務該請求。另外還需要告訴主服務器進程偵聽的特定端口地址,使用命令:







Port [number] (缺省值為80)



inetd模式

inetd是偵聽有小于1024的端口連接請求的Internet守護進程(一個服務器進程)。與前面的方法不同,當客戶系統發出到WWW服務器的連接請求時,inetd啟動一個WWW服務器進程,由此進程服務此請求,完成服務后即退出。如果選擇通過inetd服務器來運行Apache,需要編輯/etc/inetd.conf文件為Apache添加一條新的記錄:







httpd stream tcp nowait httpd
/etc/httpd/bin/httpd -f /etc/httpd/conf/httpd.conf



修改了/etc/inetd.conf文件后,就需要修改/etc/services中添加一行







httpd 80/tcp httpd



做完以上修改后,需要重新啟動inetd進程。首先,使用以下命令取得inetd的進程ID:


ps auxw |grep inetd

然后執行命令:kill -HUP

在RedHat
Linux中,默認是采用inetd服務器來運行Apache,所以只要你在安裝時選擇了httpd,以上工作在安裝時就已經代你完成了。


二、其它配置選項

Server Admin命令,用來設置WEB管理員的E-Mail地址。這個地址會出現在系統連接出錯的時候,以便訪問者能夠將情況及時地告知WEB管理員。







命令格式: Server Admin [you E-Mail
address]

例:Server Admin [email protected]

ErrorLog命令,用來指定錯誤記錄文件名稱和路徑。

命令格式: ErrorLog [log filename]

例:ErrorLog /var/httpd/error.log

Timeout命令,只要客戶端超過這里設定的秒數還沒有完成一個請求的話,服務端將終止這次請求服務。如果網絡速度較慢的話,建議在此設置較大的數值。以給客戶端更多機會。


命令格式: Timeout [second]

例:Timeout 120

ServerRoot命令,它指定在何處保存服務器的配置、錯誤及日志文件。

命令格式: ServerRoot [fully qualified path name]

例:ServerRoot /etc/httpd

ServerName命令,它配置服務器的Internet主機名

命令格式: ServerName [host name]

例:ServerName www.xxx.com

srm.conf

srm.conf是資源配置文件,用它來告訴服務器你想在WWW站點上提供什么資源以及在哪里和如何提供們。

DocumentRoot命令,用來指定主文檔的地址。

命令格式: DocumentRoot [Path]

例:DocumentRoot /home/httpd/html

UserDir命令,用來指定個人主頁的位置。如果你有一個用戶test,那么它主目錄是"/home/test",當客戶端輸入"//yourdomain/~test",系統就會到對應的目錄"/home/test/UserDir/"中去尋找。其中"UserDir"就是在UserDir命令中設置的指定目錄。


命令格式: UserDir [Path]

例: UserDir Public_html

DirectoryIndex命令,用來聲明首頁文件名稱。一般地,我們使用"index.html"或"index.htm"作為首頁的文件名。如果這樣設置后,那么客戶端發出WEB服務請求時,將首先調入的主頁是在指定目錄下文?quot;index.html"或"index.htm"。


命令格式: DirecotryIndex [filename]

例:DirecotryIndex index.html index.htm

ScriptAlias命令,為腳本程序目錄起個別名,具體可見4.7小節。

命令格式: ScriptAlias [/alias/] [fullly qualified path for script
directory]

例: ScriptAlias /cgi-bin/ /home/httpd/cgi-bin



access.conf的配置

access.conf文件用來設置WWW站點上諸如文件、目錄和腳本項目的訪問權限。該文件的第一段非注釋部分如下:







<Directory /home/httpd/html>

Option Indexes Includes ExecCGI FollowSymLink

AllowOverride None

Order allow , deny

allow from all

</Directory>



大家應該注意到,這一個部分是以開始,以結束的。這表示在其中間的部分都是針對指定目錄"/home/httpd/html"而言的。


1.Option命令有很多的參數,各個參數的意義如下所示:

All 準許以下所有功能(MultiViews除外);


MultiViews 準許內容協商的Multiviews;

Indexes 若該目錄下無index文件,則準許顯示該目錄下的文件以供選擇;


IncludesNOEXEC 準許SSI(Server-side Includes),但不可使用#exec和#include功能;


Includes 準許SSI;

FollowSymLinks 準許符號鏈接到其他目錄;

ExecCGI
準許該目錄下可以使用CGI。

2.而AllowOverride命令則是用來決定是否準許在"access.conf"文件中設定的權限是否可以被在文件".htaccess"中設定的權限覆蓋。它有兩個參數:


All 準許覆蓋;

None 不準許覆蓋。

3.Order命令:用來設定誰能從這個服務器取得控制。它也有兩個參數:


allow 可以取得控制;

deny 禁止取得控制。

現在我們一起來看看關于目錄"/home/httpd/html"的設置的含義:它使得這個目錄,如果不存在index.htm文件時,列出目錄信息以供選擇,準許SSI,允許執行CGI程序,開啟了動態連接。它不允許再使用在文件".htaccess"中設定來覆蓋這里所設置的權限。使所有的人都可以取得控制。


該文件的第二段非注釋部分如下:






<Directory /home/httpd/cgi-bin>

Option ExecCGI

AllowOverride None

</Directory>



這個表示目錄"/home/httpd/cgi"的設置為,當前目錄下可以執行CGI程序。不允許再使用在文件".htaccess"中設定來覆蓋這里所設置的權限。


需要說明的是,不同的LINUX系統中,可以在這個文件中看到的信息不完全相同,但是根據這里給出的信息,大家可以參照命令的解釋自行理解文件中的設置,以及根據自己的需要進行相應的修改。


使新的配置生效

在上面,我們可能已經根據新的需求更改了相應的配置選項,如果我們要使得這個新的配置立即生效。我們就必須重新啟動WEB服務進程。在LINUX中,我們可以十分方便地使用命令行來使得WEB服務進程重啟。


/etc/rc.d/init.d/httpd restart

五、為用戶開辟個人主頁空間

如果我們利用了LINUX系統架設了一臺WEB服務器,我們不僅可以存放公司的主頁,而且還可以為公司的每一個員工提供一塊個人主頁的空間。


首先,為需要個人主頁空間的員工在LINUX上開設一個帳號。這樣,它就擁有了一個用戶主目錄"/home/用戶帳號名"。

addusr
用戶帳號名

passwd 用戶帳號名

在用戶主目錄下建立一個目錄"public_html",然后為其設置相應的權限。


cd ~用戶帳號名

mkdir public_html

chmod 755 public_html


確認在srm.conf文件中的UserDir命令設置的是public_html目錄。讓員工將自己的個人主頁上傳到自己用戶主目錄下的public_html目錄中。


現在就可以使用"//www.company.com/~用戶帳號名"來訪問員工的個人主頁了。

用Apache實現虛擬主機服務


什么是虛擬主機服務

所謂的虛擬主機服務就是指將一臺機器虛擬成多臺WEB服務器。舉個例子來說,一家公司想從事提供主機代管服務,它為其它企業提供WEB服務。那么它肯定不是為每一家企業都各準備一臺物理上的服務器,而是用一臺功能較強大的大型服務器,然后用虛擬主機的形式,提供多個企業的WEB服務,雖然所有的WEB服務就是這臺服務器提供的,但是讓訪問者看起來卻是在不同的服務器上獲得WEB服務一樣。


具體地說,就是,我們可以利用虛擬主機服務將兩個不同公司www.company1.com與www.company2.com的主頁內容都存放在同一臺主機上。而訪問者只需輸入公司的域名就可以訪問到它想得到的主頁內容。
用Apache設置虛擬主機服務通??梢圓捎昧街址槳福夯贗P地址的虛擬主機和基于名字的虛擬主機,下面我們分別介紹一下它們的實現方法。以便大家在具體的應用中能夠選擇最合適的實現方法。


設置實現基于IP地址的虛擬主機服務實現前提這種方式需要在機器上設置IP別名,也就是在一臺機器的網卡上綁定多個IP地址去為多個虛擬主機服務。而且要使用這項功能還要確定在你的LINUX內核中必須支持IP別名的設置,否則你還必須重新編譯內核。


下面舉一個擁有兩個虛擬主機的服務設置,以供參考。

2.配置步驟

假設,我們用來實現虛擬主機服務的機器,首先已經為自己提供了WEB服務,現在將為新的一家公司www.company1.com提供虛擬主機服務。


1)規劃IP地址:為虛擬主機申請新的IP地址。(假設本機IP地址為202.101.2.1)

www.company1.com
202.101.2.2

2) 讓ISP作好相應的域名解析工作。

3) 為網卡設置IP別名:


/sbin/ifconfig eth0:0 202.101.2.2 netmask 255.255.255.0

4)
重新設置"/etc/httpd/conf/httpd.conf",在文件中加入:






<VirtualHost 202.101.2.2>

ServerAdmin [email protected]

DocumentRoot /home/httpd/www.company1.com

ServerName www.company1.com

ErrorLog /var/log/httpd/www.company1.com/error.log

</VirtualHost>



5)建立相應的目錄。

mkdir /home/httpd/www.company1.com


mkdir /var/log/httpd/www.company1.com/error.log

6)將相應的主頁內容存放在相應的目錄中即可。


3.不利因素

這種虛擬主機的實現方法有一個嚴重的不足,那就是,每增加一個虛擬主機,就必須增加一個IP地址。而由于IP地址空間已經十分緊張,所以通常情況下是無法取得這么多的IP地址的。而且從某種意義上說,這也是一種IP地址浪費。設置實現基于名字的虛擬主機服務而基于名字的虛擬主機服務,是比較適合使用的一種方案。因為它不需要更多的IP地址,而且配置簡單,無須什么特殊的軟硬件支持。現代的瀏覽器大都支持這種虛擬主機的實現方法。當然,這也就是指一些早期的客戶端瀏覽器也許不支持這種虛擬主機的實現方法。


正是以上原因,我們沒有理由不使用基于名字的虛擬主機服務而使用基于IP地址的虛擬主機服務。配置基于名字的虛擬主機服務需要修改配置文件?quot;/etc/httpd/conf/httpd.conf",在這個配置文件中增加以下內容。







NameVirtualHost 202.101.2.1

<VirtualHost 202.101.2.1>

ServerAdmin [email protected]

DocumentRoot /home/httpd/www.company1.com

ServerName www.company1.com

ErrorLog /var/log/httpd/www.company1.com/error.log

</VirtualHost>

<VirtualHost 202.101.2.1>

ServerAdmin [email protected]

DocumentRoot /home/httpd/www.company2.com

ServerName www.company2.com

ErrorLog /var/log/httpd/www.company2.com/error.log

</VirtualHost>



也就是在基于IP地址的配置基礎上增加一句:NameVirtualHost 202.101.2.1而已。在本例中,為了體現只需要增加一次,所以特別地設置了兩個虛擬主機服務。


最后也是建立相應的目錄,將主頁內容放到相應的目錄中去就可以了

配置CGI


1. 什么是CGI

CGI是獨立于語言的網關接口規范,它實際上可以用任何廣泛流行的應用程序開發語言來實現,包括C、C++、Perl、Shell腳本甚至Java。


WEB服務器從客戶端得到某個URL,它告訴WEB服務器,必須運行一個CGI外部應用程序。那么WEB服務器啟動這一應用程序,等待它完成并返回輸出結果。最后,它將此應用程序的輸出結果傳輸給另一端的WEB客戶。


2. 為CGI配置Apache

那么如何使Apache能處理CGI請求呢?我們必須通過相應的配置過程告知Apache在哪里存儲CGI程序,指明CGI程序的擴展等,以下我們逐一介紹一下設置的內容與步驟。


創建存儲CGI程序的目錄

創建集中的CGI程序目錄只是建立CGI環境的開始。如果要考慮提高安全

性的話,應將集中的CGI程序目錄保存在DocumnetRoot目錄外,使得訪問者不能直接訪問CGI程序。


第一步:在DocumentRoot目錄外創建一個目錄,然后將所有的CGI程序都集中存放在這個目錄下。例如,你可創建一個/home/httpd/public/apps的目錄作為CGI程序的大本營。


第二步:為CGI程序目錄創建別名,也就是編輯配置文件httpd.conf,加入:

ScriptAlias /cgi-bin/
/home/httpd/public/apps

這樣做后,當客戶訪問www.xxx.com/cgi-bin/li.cgi時,WEB服務器就會自動執行WEB服務器上的/home/httpd/public/apps/li.cgi文件。


第三步:為CGI目錄設置合適的權限,一般是只允許Apache有讀取和執行的權限但沒有寫的權限。

允許用戶訪問cgi-bin


我們已經在4.5小節中介紹了如何給用戶開辟個人主頁空間,但如果你的

用戶需要使他的主頁更具有活力,往往會向你申請cgi-bin訪問服務。下面我們就介紹一個Apache服務器為用戶提供的兩種cgi-bin訪問方法。


使用Directory或DirectoryMatch容器

當在配置文件srm.conf中用UserDir命令被賦值為目錄名稱時,Apache就


把它作為用戶WWW站點的頂層目錄。例如:

UserDir Public_html

當Apache接到www.xxx.com/~user的請求,就到/home/user/Public_html取出主頁發送給客戶。


如果要為每個用戶添加CGI支持就在Apache的配置文件access.conf中添加下列配置:






<DirectoryMatch "/home/[a-z]+/public_html/cgi-bin">

Options ExecCGI

AddHandler cgi-script .cgi .pl

</DirectoryMatch>



注:將DirectoryMatch換成Directory亦可

在這種方法中,Apache服務器將www.xxx.com/~user/cgi-bin請求翻譯成為了/home/user/Public_html/cgi-bin/,并允許執行任何帶有正確擴展名(.cgi或.pl)的CGI程序。


使用ScriptAliasMatch命令

通過使用ScriptAliasMatch命令,也可以為每個用戶添加CGI支持。例如:


ScriptAliasMatch ~([a-z]+)/cgi-bin/(.*) /home/$1/public_html/cgi-bin/$2


這個命令將用戶名與$1相匹配,其中$1與~([a-z]+)相等。將/cgi-bin/后面的任何內容與$2相匹配,其中$2與(.*)相等。


這個設置也就實現了將www.xxx.com/~user/cgi-bin/xxx.cgi請求解釋為:

/home/user/Public_html/cgi-bin/xxx.cgi


那么大家想一想,如果你想將這個請求解釋為:

/home/httpd/public/apps/xxx.cgi

該如何設置呢?對,應該是:


ScriptAliasMatch ~([a-z]+)/cgi-bin/(.*) /home/httpd/public /apps/$2


3.Apache為CGI提供的環境變量

Apache服務器提供了許多環境變量可以用于CGI程序的編寫,了解它們也一定有助于寫出充分利用Apache的CGI程序,所以在此也對此作一簡單介紹。


服務器變量

服務器變量由Apache設置用來通知CGI程序有關Apache的情況。通過使用這些變量,CGI程序能確定有關服務器的不同信息:Apache的版本,管理員的E-Mail地址等。







SERVER_SOFTWARE

這個變量是WWW服務器Apache的版本號,它的值形如:Apache/Version,如Apache/1.3;

GATEWAY_INTERFACE

這個變量的值是當前CGI規范的版本號,其值形如:CGI/1.1;

SERVER_ADMIN

如果在httpd.conf文件中有設置站點管理員的e-mail地址的話,這個變量就會存放著這個e-mail地址;

DOCUMENT_ROOT

這個變量存放在是被訪問的WWW站點的DocumentRoot命令指定的值。

客戶請求變量

Apache提供的有關客戶請求方的環境變量有許多,以下只是有選擇性地介紹一些最常見的。

SERVER_NAME

此變量可以告訴CGI程序它訪問的是哪一個主機。這個值可以是IP地址也可以是完整的主機名;

HTTP_ACCEPT

此變量被賦值為客戶所能接受的MIME類型的列表,如:HTTP_ACCEPT=image/gif;

HTTP_ACCEPT_CHARSET

此變量被賦值為客戶所能接受的字符集,如:

HTTP_ACCEPT_CHARASET=iso-8859-1.,*,utf-8;

HTTP_ACCEPT_LANGUAGE

此變量被賦值為客戶所能接受的語言,如:HTTP_ACCEPT_LANGUAGE=en;

HTTP_ACCEPT_AGENT

這個變量指定發出請求的系統正在運行的瀏覽器類型和操作系統;

HTTP_PORT:服務端口;

REMOTE_HOST:客戶端的IP地址或IP名稱信息;

REMOTE_PORT:客戶端的端口號;



4. 一點提示

若干年來,通過網關接口(CGI)已成為服務器端應用程序開發的事實標準。但隨著時間的推移,發現在沉重的CGI負擔下許多WWW服務器系統的表現不盡人意。這是因為CGI規范存在瓶頸問題:每當客戶系統請求CGI應用程序時,WWW服務器就必須啟動新的CGI進程,直到完成任務后結束進程。這在負載不高時,會工作正常。但是,在高負載時,繁多的進程將成為性能的瓶頸問題。


所以現在開始出現新的標準來彌補這一不足,其中FastCGI是很有前途的一種新的開放式標準。

你可以在Apache中通過添加mod_fastcgi.c??槔粗С諪astCGI。


建立Apache站點的基本安全機制

對于WWW服務來說,在WWW服務器和WWW瀏覽器之間并不始終維持對話過程。辦要WWW服務器完成對一個URL請求的服務,連接就斷開了。


在這種情況下,在WWW上保證可以使用的唯一認證機制是由HTTP本身提供 的。在標準的Apache服務器實現了這樣的認證,它能控制哪些主機可能訪問特定的站點或特點的站點的一部分。


這種認證可以分為兩種,一種是基于主機的的認證,另一種是基于用戶名/口令的認證。由于互聯網上的決大多數用戶的IP地址是動態獲得的,所以基于主機的認證方式并不總適用。所以在大多數情況下,傳統的基于用戶名/口令的認證方式更為現實。下面我們就對這兩種認證的實現做一簡要的介紹。


1. 基于主機的認證方式

在種認證模式顧名思義,訪問是用主機名或主機IP地址來控制的。支持這種認證方式的是Apache的mod_access???,這個??槿筆∽刺率潛話滄傲說?。該??橛靡韻錄鋼諥pache命令來提供訪問控制功能。


allow命令

語法:allow from host1 host2 host3 ...

這個命令定義了允許訪問站點或目錄