Apache的基本設置主要交由httpd.conf來設定管理,咱們要修改Apache的相關設定,主要仍是經過修改httpd.cong來實現。下面讓咱們來看看httpd.conf的內容,它主要分紅3大部分:
Section 1:Global Environment
Section 2:'Main' server configuration
Section 3:Virtual Hosts
【第一部分】
·ServerType standalone
這表示Apache是以standalone啓動,也能夠是inetd。所謂standalone是指啓動一次來接聽全部的連線;而inetd是接到http的連線要求才啓動,隨着連線的結束而結束,這樣負擔是否是很但呢?因此通常都是以standalone啓動。
·ServerRoot "/usr/local/httpd"
此爲apache的目錄
·#LocdFile /use/local/httpd/logs/httpd.lock
保留預設值,不更動
·PidFile /usr/local/httpd/logs/httpd.pid
此文件記錄着apache的父處理程序id
·ScoreBoardFile /usr/local/httpd/logs/httpd.scoreboard
此文件存儲處理程序的信息
·#ResourceConfig conf/srm.conf
·#AccessConfig conf/access.conf
因爲咱們統籌由httpd.conf來管理,因此這兩個文件預設是註解起來的,能夠保留預設值不更動
·Timeout 300
設盯超時的時間。若是用戶端超過300秒還沒連上server,或server超過300秒還沒傳送信息給用戶端,即斷線。
·KeepAlive On
容許用戶端的連線有多個請求,設爲Off表示不容許
·MaxKeepAliveRequests 100
每次連線最大的請求樹木,數字愈大,效能愈好。0表示不限制
·MinSpareServer 5
·MaxSpareServers 10
MinSpareServer 5表示最少會有5個閒置的處理程序,若是實際的數目少於此數目,則會增長處理程序。MaxSpareServers 10表示最大的閒置處理程序數目,若是你的網站需求量很大,能夠將此數目設大一些,大不要隨便將此數目設得太大。
·StartServers 5
啓動時Server的數目
MaxClients 150
限制同時間最大的連線數目,固然不能設得過小,一旦達到此數目,就沒法再增長用戶端
·MaxRequestPerChild 0
限制子處理程序結果前的要求數目,0表示不限制
·#Listen 3000
·#Listen 12.34.56.78:80
使用其它的鏈接端口或IP
·BindAddress *
能夠接聽*(全部IP地址)、指定的IP地址或是完整的域名
·#LoadModule foo_module libexec/mod_foo.so
使用DSO模塊
·#ExtendedStatus On
可檢閱apache的狀態信息,預設是Off(註解起來)
【第二部分】
若是以前的ServerType是inetd,請直接跳到ServerAdmin。
·Port 80
Standalone服務器接聽的鏈接端口,固然也能夠是其餘小於1023的端口號
·User nobody
·Group nobody
執行httpd的用戶和羣組
·ServerAdmin 管理員的電子郵件地址
這是管理員的電子郵件地址,若是apache有問題的話,會寄信通知管理員,固然你也能夠創建一個專門負責web的賬號來收信
·ServerName 你的主機名稱
此爲主機名稱,若是沒有域名,也能夠用IP
·DocumentRoot "usr/local/httpd/htdocs"
此目錄爲apache放置網頁的地方,裏面的index.html即爲連到此主機的預設首頁
·
Options FollowSymLinks
AllowOverride none
此目錄設定用戶放置網頁的目錄(public_html)的執行動做。詳細的目錄存取方法會在後面說明
·
Options Indexes FolloeSymLinks
AllowOverride None
Order allow,deny
Allow from all
此目錄設定apache的網頁目錄(htdocs)的執行動做
·UserDir public_html
用戶可在本身的目錄下創建public_html目錄來放置網頁,輸入http://主機地址/~用戶名稱便可鏈接到...勞撤胖玫牡胤?/a>
·DirectoryIndex index.html
這裏設定預設主頁的名稱
·AccessFileName .htaccess
這個是控制存取的文件名稱,通常採用預設的.htaccess名稱,後面會說明htaccess的使用方法
·
Order allow,deny
Deny from all
這用來防止其餘人看到.ht開頭的文件內容,不只是保護.htaccess的內容,還保護.htpasswd的內容。固然也能夠直接寫成。若是你有更改AccessFilename,例如將.htaccess改爲.accessht,請記得也要在此作相關的更改,如此才能防止其餘人看到哦
·#CacheNegotiatedDocs
註解起來是告訴Proxy不要將互動產生的文件存入cache,若是拿掉#,則會存在cache中
·UseCanonicalName On
使用標準的名稱,預設是On。假設有一個web server的全名是www.sample.com,通常稱爲www;若是us...羑ttp://www/abc
·TypeConfig /usr/local/httpd/conf/mime.types
指定存放MIME文件類型的文件。你能夠自行編輯mime.types文件。
·DefaultType text/plain
當server不認得此文件類型時的預設格式,此設定是當成通常文字
·
MIMEMagicFile /usr/local/httpd/conf/magic
mod_mime_magic模塊可以使server由文件內容決定其MIME類型。若是有載入mod_mime_magic模塊,纔會處理MIMEMagicFile這一段。若是是…,則表示若是沒有載入該模塊,纔會處理這一段
·HostLookups Off
若是爲On,則每次都會向name server解析該IP,記錄此連線的名稱(例如www.apache.org)自換岷牟簧偈奔洌...爲Off,僅記錄IP
·ErrorLog /usr/local/httpd/logs/error_log
指定發生錯誤的記錄文件(error_log)位置。若是在沒有指定發生錯誤的記錄文件,則會沿用此文件
·LogLevel warn
記錄分紅不少等級,在此是warn。各等級以下: 等級 說明
debug debug信息
info 普通訊息
notice 重要信息
warn 警告信息
error 發生錯誤
crit 緊急狀況
alert 立刻要處理的狀況
amerg 系統快要死了
·LogFormat "%h %l %u %t\"%r\"%>s %b\"{Referer}i\"\"${UserAgent}i\""combined
LogFormat "%h %l %u %t"%r\"%>s %b"commom
LogFormat "%{Referer}i->%U"referer
LogFormat "%{User-agent}i"agent
自定四種記錄格式:combined、common、referer、agent
·CustomLog /usr/local/httpd/logs/access_log common
存取的記錄文件(access_log)使用自定的common格式
·#CustomLog /usr/local/httpd/logs/referer_log referer
#CustomLog /usr/local/httpd/logs/agent_log agent
#CustomLog /usr/local/httpd/logs/agent_log combined
這三個記錄文件也是使用自定義格式(分別是referer、agent、combined),不過註解起來表示未使用這三個文件
·ServerSignature On
設爲On時,在server所產生的網頁(像是錯誤發生時)上,會有apache的版本、主機、鏈接端口的一行信息;若是設爲Email,則會有mailto:給管理員的超連接
·Alias /icons/ "/usr/local/httpd/icons/"
使用較短的別名,其格式爲:Alias 別名 原名。
·ScriptAlias /cgi-bin/ "/usr/local/httpd/cgi-bin/"
和Alias同樣,只是這是設定server script的目錄
·IndexOptions FancyIndexing
顯示好看的文件清單(配合下面各文件所對應的圖形)
·AddIconByEncoding(CMP,/icons/compressed.gif)x-conpress x-gzip
·AddIcon /icons/blank.gif^^BLANKICON^^DefaultIcon/icons/unknow.gif
這些是在顯示文件清單(以前所說的FancyIndex)時,各類文件類型的對應圖形。例如.ps .si .eps這三種文件的表示圖形都是a.gif
·#AddDescription "GZIP conpressed document" .gz
#AddDescription "tar archive" .tar
#AddDescription "GZIP compressed tar archive" .tgz
這些是在顯示文件清單時,在文件後面附上說明,其格式爲:
AddDescription "說明" 文件名
例如:AddDescription "It is private txt" my.txt
·ReadmeName README
顯示文件清單時,在最下面顯示README的文件內容
設置CGI腳本/將httpd.conf作爲惟一的配置文件/用戶受權和訪問控制等
關於Apache的配置及使用,在LinuxAid中已經有很多文章作了詳細的闡述,本文討論了在使用Apache時,有關配置文件的使用及對文件的訪問控制等內容,算是對Apache的使用所作的一些補充吧!
若是您對Apache有必定的瞭解,特別是對幾個配置文件有必定的瞭解,這將會有助於您對本文內容的理解;若是恰巧您不是很瞭解這幾個配置文件的使用,那麼就藉着這個機會來一塊兒熟悉一下吧。
1、關於CGI執行腳本的配置
這裏有兩種設置CGI腳本的方法。第1、CGI的腳本文件以.cgi爲擴展名;第2、設置腳本可執行目錄。可是這兩種方法都須要將要執行的文件設置爲711,才能夠被執行。
第一種方法,咱們須要在access.conf文件種將你要發行的目錄設置爲Option ExecCGI All,在srm.conf資源配置文件中,加上下列一句:
AddHandle cgi-script .cgi
這樣在全部的目錄種只要你的文件是.cgi爲擴展名的,且文件訪問權限爲711的,不管給文件在你發行目錄的任何一個地方均可以作爲CGI被Apache服務器調用。這種方法通常沒有第二種方法安全。
第二種方法,是將一個目錄做爲一個可執行目錄,將全部的cgi文件都放在其中,這裏就不必定非得是以.cgi爲擴展名得文件能夠執行,而是隻要有711屬性的文件就能夠被執行,並且其它的非可執行文件都被禁止訪問。咱們的默認配置文件種就有一個很好的例子:
access.conf:
Allow Override None
Options ExecCGI
srm.conf
ScriptAlias /cgi-bin/ /home/httpd/cgi-bin/
這樣只要在/home/httpd/cgi-bin/目錄中的可執行文件均可以被Web服務器調用,而其它的非可執行文件將被拒絕訪問。
2、配置用戶的發行目錄
這裏有兩種設置方法:
第一種是系統的默認方法,即用戶目錄下的public_html目錄爲用戶的發行目錄,且默認的主頁文件爲index.html,且該目錄不支持CGI。
第二種是在其它目錄種專門爲用戶設置發佈目錄,如我想在/home/html目錄作爲用戶的web目錄,那管理員就應該在該目錄下爲每個用戶設置一個子目錄,如:/home/html/user0一、/home/html/user02等。那麼,你的srm.conf文件中的UserDir後面就不能再是public_html了,應該改成:UserDir /home/html/*/,注意這裏的「*」表明anyone,當你再瀏覽器中請求一個如http://www.domain/~user01時,Apache...ndex.html文件。
這種設置不須要到access.conf中設置該目錄的訪問屬性,還有,當咱們設置虛擬主機時也不用設置目錄的訪問屬性,可是若是你想讓某個目錄具備CGI權限,都要到Access.conf文件中去配置目錄的訪問權限,如:你想讓你的全部用戶在他們的發佈目錄中具備CGI訪問權,則須要在你的access.conf中這樣設置:
Allow Override None
Options ExecCGI
注意這裏設置用戶目錄中的cgi-bin子目錄爲cgi執行目錄,這是一種安全的設置,並且也是一種UNIX的習慣。
3、如何將Apache服務器設置爲inetd的子服務
當你安裝了Apache後,默認設置爲standalone方式運行,若是你想將它設置爲inetd的子服務,首先在每次激活Linux時不激活httpd,而後編輯/etc/inetd.conf,在其中加入下列語句:http stream tcp nowait root /usr/sbin/httpd httpd
而後從新激活inetd服務器。這樣你用ps -aux命令查看進程運行狀況時,你不會發現httpd的進程的存在,可是一旦有客戶請求一個頁面時,inetd就激活一個httpd進程爲該請求服務,以後就自動釋放,這種運行方式有助於節省系統資源,可是若是你的web服務很重要,通常不建議設置爲這種方式運行。
4、將httpd.conf作爲惟一的配置文件
在Apache中給用戶提供了三個配置文件: srm.conf、 access.conf 和 httpd.conf files。實際上這三個文件是平等的,全部的配置均可以放在一個單獨的httpd.conf文件中,事實上在Apache 1.3.2中就已經這樣作了,在httpd.conf中應包括如下兩條指令來防止Apache對srm.conf和access.conf兩個配置文件的訪問:
AccessConfig /dev/null
ResourceConfig /dev/null
在apache1.3.2中只要註釋掉如下這兩行便可:
AccessConfig conf/access.conf
ResourceConfig conf/srm.conf
5、用戶受權和訪問控制
你也許在訪問某些網站時會遇到過這樣的狀況,當你點擊某個鏈接時,你的瀏覽器會彈出一個身份驗證的對話框,要求輸入帳號及密碼,若是沒有,就沒法繼續瀏覽了。有人會覺得這是用CGI作出來的,其實否則,這是WWW服務器的用戶受權和訪問控制機制在發揮做用。
你是否還記得在設置Apache服務環境的過程當中,有……..<./Directory>這個指令,能夠對不一樣的目錄提供不一樣的保護。可是這樣的設定,須要從新啓動服務器纔會生效,靈活性較差,經過AccessFile指令指定訪問控制文件的方式則比較靈活,在Apache服務器中設置用戶的訪問控制權限步驟以下:
一、首先對httpd.conf文件進行設置以下:
# AllowOverride FileInfo AuthConfig Limit
# Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec
Options Includes FollowSymLinks Indexes
AllowOverride All //*注意AllowOverride 必定要設置爲All,這樣後面的.htaccess文件纔會起做用
Order allow,deny
Allow from all
#
# Order deny,allow
# Deny from all
#
#指定配置存取控制權限的文件名稱
AccessFileName .htaccess
二、建立.htaccess文件內容
要控制某目錄的訪問權限必須創建一訪問控制文件,文件名前面指定的「.htaccess」,其內容格式以下:
AuthUserFile 用戶賬號密碼文件名
AuthGroupFile 羣組賬號密碼文件名
AuthName 畫面提示文字
AuthType 驗證方式
密碼驗證方式
用戶驗證方式AuthType目前提供了Basic和Digest兩種。
密碼檢驗設定方法與httpd.conf中的相關設定相同。
具體例子以下:
AuthUserFile /etc/secure.user
AuthName 安全認證中心
AuthType Basic
require valid-user
三、創建用戶密碼文件
若是你是第一次建立用戶密碼,命令格式以下:
htpasswd -c 密碼文件名 用戶名稱
在上面的例子中,咱們將用戶密碼文件放到了/etc/secure.user文件中,因此這裏應按照以下進行操做:
htpasswd -c /etc/secure.user sword
程序會提示你輸入兩次用戶的口令,而後用戶密碼文件就已經建立sword這個用戶也添加完畢了。
若是要向密碼文件中添加新的用戶,按照以下命令格式進行操做:
htpasswd 密碼文件 用戶名稱
這樣,從新啓動httpd後,進行該WEB目錄時就會有一個對話框彈出,要求輸入用戶名及用戶口令了。
四、如何減小訪問控制對Apache性能的影響
頻繁的使用訪問控制會對Apache的性能產生較大的影響,那麼,如何才能減小這種影響呢?最簡單也是最有效的方法之一就是減小.htaccess文件的數目,這樣能夠避免Apache對每個請求都要按照.htaccess文件的內容進行受權檢查。它不只在當前的目錄中查找.htaccess文件,它還會在當前目錄的父目錄中查找。
/
/usr
/usr/local
/usr/local/etc
/usr/local/etc/httpd
/usr/local/etc/httpd/htdocs
/usr/local/etc/httpd/htdocs/docs
一般在根目錄下沒有htaccess文件,但Apache仍然會進行例行檢查以肯定該文件確實不存在。這是影響很影響服務器工做效率的事情。下面的方法能夠消除這個討厭的過程:將AllowOverride選設置爲None,這樣Apache就會檢查.htaccess文件了。將/根目錄的AllowOverride選項設爲None,只將須要進行訪問控制的目錄下的AllowOverride選項設置爲all,以下面的例子中將/根目錄的AllowOverride 選項關閉了,只打開了/usr/local/etc/httpd/htdocs目錄下的AllowOerride選項,這樣,系統就只在/usr/local/etc/httpd/htdocs中檢查.htaccess文件,達到的提升服務效率的目的。
AllowOverride None
AllowOverride Allhtml
Apache的基本設置主要交由httpd.conf來設定管理,咱們要修改Apache的相關設定,主要仍是經過修改httpd.cong來實現。下面讓咱們來看看httpd.conf的內容,它主要分紅3大部分:
Section 1:Global Environment
Section 2:'Main' server configuration
Section 3:Virtual Hosts
【第一部分】
·ServerType standalone
這表示Apache是以standalone啓動,也能夠是inetd。所謂standalone是指啓動一次來接聽全部的連線;而inetd是接到http的連線要求才啓動,隨着連線的結束而結束,這樣負擔是否是很但呢?因此通常都是以standalone啓動。
·ServerRoot "/usr/local/httpd"
此爲apache的目錄
·#LocdFile /use/local/httpd/logs/httpd.lock
保留預設值,不更動
·PidFile /usr/local/httpd/logs/httpd.pid
此文件記錄着apache的父處理程序id
·ScoreBoardFile /usr/local/httpd/logs/httpd.scoreboard
此文件存儲處理程序的信息
·#ResourceConfig conf/srm.conf
·#AccessConfig conf/access.conf
因爲咱們統籌由httpd.conf來管理,因此這兩個文件預設是註解起來的,能夠保留預設值不更動
·Timeout 300
設盯超時的時間。若是用戶端超過300秒還沒連上server,或server超過300秒還沒傳送信息給用戶端,即斷線。
·KeepAlive On
容許用戶端的連線有多個請求,設爲Off表示不容許
·MaxKeepAliveRequests 100
每次連線最大的請求樹木,數字愈大,效能愈好。0表示不限制
·MinSpareServer 5
·MaxSpareServers 10
MinSpareServer 5表示最少會有5個閒置的處理程序,若是實際的數目少於此數目,則會增長處理程序。MaxSpareServers 10表示最大的閒置處理程序數目,若是你的網站需求量很大,能夠將此數目設大一些,大不要隨便將此數目設得太大。
·StartServers 5
啓動時Server的數目
MaxClients 150
限制同時間最大的連線數目,固然不能設得過小,一旦達到此數目,就沒法再增長用戶端
·MaxRequestPerChild 0
限制子處理程序結果前的要求數目,0表示不限制
·#Listen 3000
·#Listen 12.34.56.78:80
使用其它的鏈接端口或IP
·BindAddress *
能夠接聽*(全部IP地址)、指定的IP地址或是完整的域名
·#LoadModule foo_module libexec/mod_foo.so
使用DSO模塊
·#ExtendedStatus On
可檢閱apache的狀態信息,預設是Off(註解起來)
【第二部分】
若是以前的ServerType是inetd,請直接跳到ServerAdmin。
·Port 80
Standalone服務器接聽的鏈接端口,固然也能夠是其餘小於1023的端口號
·User nobody
·Group nobody
執行httpd的用戶和羣組
·ServerAdmin 管理員的電子郵件地址
這是管理員的電子郵件地址,若是apache有問題的話,會寄信通知管理員,固然你也能夠創建一個專門負責web的賬號來收信
·ServerName 你的主機名稱
此爲主機名稱,若是沒有域名,也能夠用IP
·DocumentRoot "usr/local/httpd/htdocs"
此目錄爲apache放置網頁的地方,裏面的index.html即爲連到此主機的預設首頁
·
Options FollowSymLinks
AllowOverride none
此目錄設定用戶放置網頁的目錄(public_html)的執行動做。詳細的目錄存取方法會在後面說明
·
Options Indexes FolloeSymLinks
AllowOverride None
Order allow,deny
Allow from all
此目錄設定apache的網頁目錄(htdocs)的執行動做
·UserDir public_html
用戶可在本身的目錄下創建public_html目錄來放置網頁,輸入http://主機地址/~用戶名稱便可鏈接到...勞撤胖玫牡胤?/a>
·DirectoryIndex index.html
這裏設定預設主頁的名稱
·AccessFileName .htaccess
這個是控制存取的文件名稱,通常採用預設的.htaccess名稱,後面會說明htaccess的使用方法
·
Order allow,deny
Deny from all
這用來防止其餘人看到.ht開頭的文件內容,不只是保護.htaccess的內容,還保護.htpasswd的內容。固然也能夠直接寫成。若是你有更改AccessFilename,例如將.htaccess改爲.accessht,請記得也要在此作相關的更改,如此才能防止其餘人看到哦
·#CacheNegotiatedDocs
註解起來是告訴Proxy不要將互動產生的文件存入cache,若是拿掉#,則會存在cache中
·UseCanonicalName On
使用標準的名稱,預設是On。假設有一個web server的全名是
www.sample.com,通常稱爲www;若是us...羑ttp://www/abc
·TypeConfig /usr/local/httpd/conf/mime.types
指定存放MIME文件類型的文件。你能夠自行編輯mime.types文件。
·DefaultType text/plain
當server不認得此文件類型時的預設格式,此設定是當成通常文字
·
MIMEMagicFile /usr/local/httpd/conf/magic
mod_mime_magic模塊可以使server由文件內容決定其MIME類型。若是有載入mod_mime_magic模塊,纔會處理MIMEMagicFile這一段。若是是…,則表示若是沒有載入該模塊,纔會處理這一段
·HostLookups Off
若是爲On,則每次都會向name server解析該IP,記錄此連線的名稱(例如
www.apache.org)自換岷牟簧偈奔洌...爲Off,僅記錄IP
·ErrorLog /usr/local/httpd/logs/error_log
指定發生錯誤的記錄文件(error_log)位置。若是在沒有指定發生錯誤的記錄文件,則會沿用此文件
·LogLevel warn
記錄分紅不少等級,在此是warn。各等級以下: 等級 說明
debug debug信息
info 普通訊息
notice 重要信息
warn 警告信息
error 發生錯誤
crit 緊急狀況
alert 立刻要處理的狀況
amerg 系統快要死了
·LogFormat "%h %l %u %t\"%r\"%>s %b\"{Referer}i\"\"${UserAgent}i\""combined
LogFormat "%h %l %u %t"%r\"%>s %b"commom
LogFormat "%{Referer}i->%U"referer
LogFormat "%{User-agent}i"agent
自定四種記錄格式:combined、common、referer、agent
·CustomLog /usr/local/httpd/logs/access_log common
存取的記錄文件(access_log)使用自定的common格式
·#CustomLog /usr/local/httpd/logs/referer_log referer
#CustomLog /usr/local/httpd/logs/agent_log agent
#CustomLog /usr/local/httpd/logs/agent_log combined
這三個記錄文件也是使用自定義格式(分別是referer、agent、combined),不過註解起來表示未使用這三個文件
·ServerSignature On
設爲On時,在server所產生的網頁(像是錯誤發生時)上,會有apache的版本、主機、鏈接端口的一行信息;若是設爲Email,則會有mailto:給管理員的超連接
·Alias /icons/ "/usr/local/httpd/icons/"
使用較短的別名,其格式爲:Alias 別名 原名。
·ScriptAlias /cgi-bin/ "/usr/local/httpd/cgi-bin/"
和Alias同樣,只是這是設定server script的目錄
·IndexOptions FancyIndexing
顯示好看的文件清單(配合下面各文件所對應的圖形)
·AddIconByEncoding(CMP,/icons/compressed.gif)x-conpress x-gzip
·AddIcon /icons/blank.gif^^BLANKICON^^DefaultIcon/icons/unknow.gif
這些是在顯示文件清單(以前所說的FancyIndex)時,各類文件類型的對應圖形。例如.ps .si .eps這三種文件的表示圖形都是a.gif
·#AddDescription "GZIP conpressed document" .gz
#AddDescription "tar archive" .tar
#AddDescription "GZIP compressed tar archive" .tgz
這些是在顯示文件清單時,在文件後面附上說明,其格式爲:
AddDescription "說明" 文件名
例如:AddDescription "It is private txt" my.txt
·ReadmeName README
顯示文件清單時,在最下面顯示README的文件內容
設置CGI腳本/將httpd.conf作爲惟一的配置文件/用戶受權和訪問控制等
關於Apache的配置及使用,在LinuxAid中已經有很多文章作了詳細的闡述,本文討論了在使用Apache時,有關配置文件的使用及對文件的訪問控制等內容,算是對Apache的使用所作的一些補充吧!
若是您對Apache有必定的瞭解,特別是對幾個配置文件有必定的瞭解,這將會有助於您對本文內容的理解;若是恰巧您不是很瞭解這幾個配置文件的使用,那麼就藉着這個機會來一塊兒熟悉一下吧。
1、關於CGI執行腳本的配置
這裏有兩種設置CGI腳本的方法。第1、CGI的腳本文件以.cgi爲擴展名;第2、設置腳本可執行目錄。可是這兩種方法都須要將要執行的文件設置爲711,才能夠被執行。
第一種方法,咱們須要在access.conf文件種將你要發行的目錄設置爲Option ExecCGI All,在srm.conf資源配置文件中,加上下列一句:
AddHandle cgi-script .cgi
這樣在全部的目錄種只要你的文件是.cgi爲擴展名的,且文件訪問權限爲711的,不管給文件在你發行目錄的任何一個地方均可以作爲CGI被Apache服務器調用。這種方法通常沒有第二種方法安全。
第二種方法,是將一個目錄做爲一個可執行目錄,將全部的cgi文件都放在其中,這裏就不必定非得是以.cgi爲擴展名得文件能夠執行,而是隻要有711屬性的文件就能夠被執行,並且其它的非可執行文件都被禁止訪問。咱們的默認配置文件種就有一個很好的例子:
access.conf:
Allow Override None
Options ExecCGI
srm.conf
ScriptAlias /cgi-bin/ /home/httpd/cgi-bin/
這樣只要在/home/httpd/cgi-bin/目錄中的可執行文件均可以被Web服務器調用,而其它的非可執行文件將被拒絕訪問。
2、配置用戶的發行目錄
這裏有兩種設置方法:
第一種是系統的默認方法,即用戶目錄下的public_html目錄爲用戶的發行目錄,且默認的主頁文件爲index.html,且該目錄不支持CGI。
第二種是在其它目錄種專門爲用戶設置發佈目錄,如我想在/home/html目錄作爲用戶的web目錄,那管理員就應該在該目錄下爲每個用戶設置一個子目錄,如:/home/html/user0一、/home/html/user02等。那麼,你的srm.conf文件中的UserDir後面就不能再是public_html了,應該改成:UserDir /home/html/*/,注意這裏的「*」表明anyone,當你再瀏覽器中請求一個如
http://www.domain/~user01時,Apache...ndex.html文件。
這種設置不須要到access.conf中設置該目錄的訪問屬性,還有,當咱們設置虛擬主機時也不用設置目錄的訪問屬性,可是若是你想讓某個目錄具備CGI權限,都要到Access.conf文件中去配置目錄的訪問權限,如:你想讓你的全部用戶在他們的發佈目錄中具備CGI訪問權,則須要在你的access.conf中這樣設置:
Allow Override None
Options ExecCGI
注意這裏設置用戶目錄中的cgi-bin子目錄爲cgi執行目錄,這是一種安全的設置,並且也是一種UNIX的習慣。
3、如何將Apache服務器設置爲inetd的子服務
當你安裝了Apache後,默認設置爲standalone方式運行,若是你想將它設置爲inetd的子服務,首先在每次激活Linux時不激活httpd,而後編輯/etc/inetd.conf,在其中加入下列語句:http stream tcp nowait root /usr/sbin/httpd httpd
而後從新激活inetd服務器。這樣你用ps -aux命令查看進程運行狀況時,你不會發現httpd的進程的存在,可是一旦有客戶請求一個頁面時,inetd就激活一個httpd進程爲該請求服務,以後就自動釋放,這種運行方式有助於節省系統資源,可是若是你的web服務很重要,通常不建議設置爲這種方式運行。
4、將httpd.conf作爲惟一的配置文件
在Apache中給用戶提供了三個配置文件: srm.conf、 access.conf 和 httpd.conf files。實際上這三個文件是平等的,全部的配置均可以放在一個單獨的httpd.conf文件中,事實上在Apache 1.3.2中就已經這樣作了,在httpd.conf中應包括如下兩條指令來防止Apache對srm.conf和access.conf兩個配置文件的訪問:
AccessConfig /dev/null
ResourceConfig /dev/null
在apache1.3.2中只要註釋掉如下這兩行便可:
AccessConfig conf/access.conf
ResourceConfig conf/srm.conf
5、用戶受權和訪問控制
你也許在訪問某些網站時會遇到過這樣的狀況,當你點擊某個鏈接時,你的瀏覽器會彈出一個身份驗證的對話框,要求輸入帳號及密碼,若是沒有,就沒法繼續瀏覽了。有人會覺得這是用CGI作出來的,其實否則,這是WWW服務器的用戶受權和訪問控制機制在發揮做用。
你是否還記得在設置Apache服務環境的過程當中,有……..<./Directory>這個指令,能夠對不一樣的目錄提供不一樣的保護。可是這樣的設定,須要從新啓動服務器纔會生效,靈活性較差,經過AccessFile指令指定訪問控制文件的方式則比較靈活,在Apache服務器中設置用戶的訪問控制權限步驟以下:
一、首先對httpd.conf文件進行設置以下:
# AllowOverride FileInfo AuthConfig Limit
# Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec
Options Includes FollowSymLinks Indexes
AllowOverride All //*注意AllowOverride 必定要設置爲All,這樣後面的.htaccess文件纔會起做用
Order allow,deny
Allow from all
#
# Order deny,allow
# Deny from all
#
#指定配置存取控制權限的文件名稱
AccessFileName .htaccess
二、建立.htaccess文件內容
要控制某目錄的訪問權限必須創建一訪問控制文件,文件名前面指定的「.htaccess」,其內容格式以下:
AuthUserFile 用戶賬號密碼文件名
AuthGroupFile 羣組賬號密碼文件名
AuthName 畫面提示文字
AuthType 驗證方式
密碼驗證方式
用戶驗證方式AuthType目前提供了Basic和Digest兩種。
密碼檢驗設定方法與httpd.conf中的相關設定相同。
具體例子以下:
AuthUserFile /etc/secure.user
AuthName 安全認證中心
AuthType Basic
require valid-user
三、創建用戶密碼文件
若是你是第一次建立用戶密碼,命令格式以下:
htpasswd -c 密碼文件名 用戶名稱
在上面的例子中,咱們將用戶密碼文件放到了/etc/secure.user文件中,因此這裏應按照以下進行操做:
htpasswd -c /etc/secure.user sword
程序會提示你輸入兩次用戶的口令,而後用戶密碼文件就已經建立sword這個用戶也添加完畢了。
若是要向密碼文件中添加新的用戶,按照以下命令格式進行操做:
htpasswd 密碼文件 用戶名稱
這樣,從新啓動httpd後,進行該WEB目錄時就會有一個對話框彈出,要求輸入用戶名及用戶口令了。
四、如何減小訪問控制對Apache性能的影響
頻繁的使用訪問控制會對Apache的性能產生較大的影響,那麼,如何才能減小這種影響呢?最簡單也是最有效的方法之一就是減小.htaccess文件的數目,這樣能夠避免Apache對每個請求都要按照.htaccess文件的內容進行受權檢查。它不只在當前的目錄中查找.htaccess文件,它還會在當前目錄的父目錄中查找。
/
/usr
/usr/local
/usr/local/etc
/usr/local/etc/httpd
/usr/local/etc/httpd/htdocs
/usr/local/etc/httpd/htdocs/docs
一般在根目錄下沒有htaccess文件,但Apache仍然會進行例行檢查以肯定該文件確實不存在。這是影響很影響服務器工做效率的事情。下面的方法能夠消除這個討厭的過程:將AllowOverride選設置爲None,這樣Apache就會檢查.htaccess文件了。將/根目錄的AllowOverride選項設爲None,只將須要進行訪問控制的目錄下的AllowOverride選項設置爲all,以下面的例子中將/根目錄的AllowOverride 選項關閉了,只打開了/usr/local/etc/httpd/htdocs目錄下的AllowOerride選項,這樣,系統就只在/usr/local/etc/httpd/htdocs中檢查.htaccess文件,達到的提升服務效率的目的。
AllowOverride None
AllowOverride All
DocumentRoot "/usr/local/apache/htdocs" #設置存放站點html文件的目錄。 Options FollowSymLinks AllowOverride None #設置/目錄的指令。具體地說明: Option:定義在目錄內所能執行的操做。 None:表示只能瀏覽, FollowSymLinks:容許頁面鏈接到別處, ExecCGI:容許執行CGI, MultiViews:容許看動畫或是聽音樂之類的操做, Indexes:容許服務器返回目錄的格式化列表, Includes:容許使用SSI。這些設置能夠複選。 All:則能夠作任何事,但不包括MultiViews。 AllowOverride:加None參數表示任何人均可以瀏覽該目錄下的文件。 另外的參數有:FileInfo、AuthConfig、Limit。