http://httpd.apache.org/docs/2.2/ //官方手冊
一、httpd的特性
二、安裝httpd
三、httpd基礎配置詳解
四、詳細實驗
高度子產品化:core + modules
DSO:dynamic share object動态共享對象,支援動态裝解除安裝
MPM:multi process modules:多道處理子產品,決定httpd的工作方式來響應使用者請求
prefork:多程序模型,每個程序響應一個請求;
1個主程序:負責[生成/回收]子程序處理使用者請求;負責建立套接字;負責接收請求,并将其派發給某子程序進行并發處理;
n個子程序:每個子程序處理一個請求
工作模型:會預先生成幾個空閑程序,随時等待響應使用者請求;定義最大空閑和最小空閑
worker:多程序多線程模型,每線程處理一個使用者請求
1個主程序:負責生成子程序;負責建立套接字;負責接收請求,并将其派發給某子程序進行并發處理;
n個子程序:每個子程序負責生成多個線程
每個線程,負責響應使用者請求
并發響應數量:m*n
m:子程序數量
n:每個子程序所能建立的最大線程數量
event:事件驅動模型,多程序模型,每個程序響應多個請求
子程序:基于事件驅動機制直接響應多個請求;
http2.2:仍為測試使用模型
http2.4:event可以直接使用
============================================
prefork 1=n===? 1*n //每個子程序隻響應1個請求
worker 1=n=m===? m*n //1個子程序響應1個請求
event 1==n===?? 1*n //每個子程序響應多個請求
并發伺服器響應模型:
單程序模型
多程序模型
複用的I/O的模型
多線程
事件驅動
複用的多程序多線程模型
MPM:2.2和2.4
prefork:多程序模型,一個主程序,生成n個子程序,一個程序響應一個請求
worker:多程序多線程模型,一個主程序,生成多個子程序,每個子程序生成多個線程,一個線程響應一個使用者請求
event:事件驅動模型,多程序模型,一個程序,生成多個子程序,一個程序響應多個請求
相同點:都有主程序,都有子程序 //最常見的多道處理子產品機制
http的程式版本
httpd 1.3官方已經停止維護
http2.0,2.4是主流版本
http2.4目前最穩定
httpd的功能特性
CGI:common gateway Interface
虛拟主機:IP,PORT,FQDN
反向代理:
負載均衡:
豐富的使用者認證機制:
basic
digest
支援第三方子產品:
...
rpm包
編譯安裝:定制新功能,或其他原因
CentOS 6:httpd2.2
配置檔案:
/etc/httpd/conf/httpd.conf
/etc/httpd/conf.d/*.conf
服務腳本
/etc/rc.d/init.d/httpd
腳本配置檔案:/etc/sysconfig/httpd
主程式檔案:
/usr/sbin/httpd //prefork的模型,預設
/usr/sbin/httpd.event
/usr/sbin/httpd.worker
//http2.2這幾個模型,是不支援動态裝解除安裝的
日志檔案:
/var/log/httpd
access_log:通路日志
error_log:錯誤日志
站點文檔:
/var/www/html
子產品檔案路徑:
/usr/lib64/httpd/modules/
服務控制
service
chkconfig httpd on|off
CentOS 7: httpd2.4 //MPM可以動态裝載
子產品配置檔案
/etc/httpd/conf.modules.d/* 根據名字按順序進行加載
systemd unit file:
/usr/lib/systemd/system/httpd.service
基于unit加載服務
主程式:
/usr/sbin/httpd //http-2.4支援MPM的動态切換
/var/www/html
服務控制:
sysemctl {enabled|disable} httpd.service
httpd-2.2常用配置
httpd.conf //三段
1.全局配置
2.主伺服器配置
3.虛拟主機配置
配置格式:
directive value
directive:不區分大小寫,
value:一般也不區分大小寫,為路徑時,是否區分字元大小寫,取決于fs
常用配置:
//cp httpd.conf{,.bak} //建議先備份一下
1.修改監聽的ip和port
Listen [IP:]PORT
1.//省略IP辨別為0.0.0.0;本機所有ip
2.listen 80
listen 8080 //同時在80和8080端口提供服務
3.修改監聽socket,重新開機服務程序才能生效,reload不能生效
2.持久連結 //
persistent Connection:TCP連接配接建立後,每個資源擷取完成後,不完全斷開連結,而是繼續等待其他資源請求的進行
如何斷開?
數量限制
時間限制
副作用:對并發通路量較大的伺服器,長連接配接機制會使得後續某些請求無法得到響應;
折中:使用較短的持久連結時長,以及較少的請求數量
KeepAlive On|Off //預設關閉
MaxKeepAliveRequests 100 //最多請求次數
KeepAliveTimeout 15 //逾時時間,相當于汽車的3年10w公裡,一樣,隻要滿足其中一樣,就廢棄該程序
3.MPM
httpd2.2不支援同時編譯多個MPM子產品,是以隻能編譯標明要使用的子產品
//CentOS所提供的的rpm包同時提供了三個rpm包,但同時隻能使用一個
httpd:prefork //預設使用的MPM子產品
httpd.worker:
httpd.event //分别用于實作對不同的MPM機制的實作,确認現在使用
ps aux |grep httpd //檢視目前使用的模型
檢視httpd程式的子產品清單
1.httpd -l //靜态編譯的子產品
2.httpd -M //檢視靜态和動态[共享]的所有子產品
更換其他MPM
1.service httpd stop
2.vim /etc/sysconfig/httpd
HTTPD=/usr/sbin/httpd.{worker,event} //啟用
3.service httpd start
4.ps aux |grep httpd
注意:httpd2.2不建議使用event
而且用線程取代程序,所帶來的的性能提升是有限的
重新開機服務程序方式可生效
4.
<code>Prefork</code>
<code> </code><code><</code><code>IfModule</code> <code>prefork.c></code>
<code> </code><code>StartServers 8 //服務啟動程序</code>
<code> </code><code>MinSpareServers 5 //最小空閑程序</code>
<code> </code><code>MaxSpareServers 20 //最大保持空閑的程序的數量</code>
<code> </code><code>ServerLimit 256 //最多允許maxclient啟用多少個程序</code>
<code> </code><code>MaxClients 256 //最大并發量,就是同時通路數量</code>
<code> </code><code>MaxRequestsPerChild 4000 //每個程序最多可以處理多少個請求</code>
<code> </code><code></</code><code>IfModule</code><code>></code>
<code> </code><code>pv:page view頁面通路單個頁面 </code>
<code> </code><code>uv:使用者通路量</code>
<code> </code>
<code>Worker</code>
<code> </code><code><</code><code>IfModule</code> <code>worker.c></code>
<code> </code><code>StartServers 4 //随服務啟動程序數</code>
<code> </code><code>MaxClients 300 //最大并發用戶端連接配接數</code>
<code> </code><code>MinSpareThreads 25 //最少保留多少空閑線程數量</code>
<code> </code><code>MaxSpareThreads 75 // 4*25=100>75是以開機隻會啟動3個程序,1個為主程序</code>
<code> </code><code>ThreadsPerChild 25 //每個程序可以生成的子線程</code>
<code> </code><code>MaxRequestsPerChild 0 //每個程序最多可以處理多少個請求,能處理多少個,就處理多少個</code>
watch -n.5 'ps aux |grep httpd' //每0.5s檢測一次
service httpd restart //剛開始啟動4個,後期會減去一個
5.DSO//動态加載子產品
配置指定實作子產品
<code> </code><code>LoadModule <</code><code>mod_name</code><code>> <</code><code>mod_path</code><code>> //子產品名稱相對路徑,相對于ServerRoot路徑,/etc/httpd/</code>
<code> </code><code>LoadModule disk_cache_module modules/mod_disk_cache.so</code>
<code> </code><code>LoadModule cgi_module modules/mod_cgi.so</code>
<code> </code><code>LoadModule version_module modules/mod_version.so</code>
6.定義中心主機的文檔頁面路徑
隻提供一個站點:
1.隻提供一個虛拟主機
2.使用Main server
文檔路徑映射:DocuemntRoot指向的路徑為URL路徑的起始位置
DocumentRoot "/var/www/html" //設定根目錄
7.站點通路控制
可基于兩種機制指明對哪些資源進行何種通路控制
檔案系統路徑
URL路徑
[FS路徑]/var/www/html/index.html-->[URL路徑]192.168.0.1/index.html
注意:通路控制實在 <DocumentRoot /var/www/html>中定義的
1.單個目錄及其子目錄
<Directory />
Options FollowSymLinks
AllowOverride None
...
</Directory>
2.單個檔案
<file "" >
</file>
3.一類檔案
<FileMatch "PATTERN" > //比對一類檔案,但是要啟用正規表達式引擎才能使用
...
</FileMatch>
4.URL路徑
<Location "/" >
</Location>
<LocationMatch "/" >
</LocationMatch>
示例:
<Directory "/var/www/html">
Options Indexes FollowSymLinks
Order allow,deny
Allow from all
Indexes:指明的URL路徑下不存在于定義的首頁面資源相符的資源檔案時,傳回索引清單給使用者
FollowSymLinks:
8.定義網站主界面:以及通路控制參數
DirectoryIndex index.html index.html.var
重命名index.html ,以及/etc/httpd/conf.d/welcome.conf
service httpd restart //将看到索引
<code> </code><code><</code><code>Directory</code> <code>"/var/www/html"></code>
<code> </code><code>Options Indexes FollowSymLinks //删除indexes将看不到索引</code>
<code> </code><code>AllowOverride None</code>
<code> </code><code>Order allow,deny</code>
<code> </code><code>Allow from all</code>
<code> </code><code></</code><code>Directory</code><code>></code>
修改後再次檢視:forbidden
1.Options Indexes FollowSymLinks
Indexes :是否允許索引
FollowSymlinks:是否跟随符号連結到源檔案
SymLinksifOwnerMatch:連結檔案的屬主和目标檔案的屬主相同時
ExecCGI:允許執行cgi腳本
MultiViews:是否允許内容協商
None:都不
All:所有都允許
Options None 最好
2.AllowOverride None //允許覆寫?
與通路控制相關的哪些指令可以放在.htaccess檔案(每個目錄下都可以有一個)
All //所有都可以放進去
None:
Authconfig
Limit
FileInfo
//對目錄通路的映像特别打,是以不建議使用
3.Order allow,deny //誰可以通路,先比對allow規則,後比對deny規則,後面的為預設法則
Allow from all
來源位址:
IP:
NetAddr:
172.16
172.16.0.0
172.16.0.0/16
172.16.0.0/255.255.0.0
9.定義路徑别名
Alias /download/ "/rpms/pub"
http://wwww.baidu.com/download/a.txt
/rpms/pub/a.txt
格式:
Alias /URL/ "/Path/to/some_resource"
10.設定預設字元集
AddDefaultCharset UTF-8
中文字元集:GBK, GB2312, GB18030
11.日志
日志類型:通路日志和錯誤日志
通路日志:
錯誤日志:
錯誤日志:
ErrorLog logs/error_log
LogLevel warn
LogLevel級别:debug, info, notice, warn, error, crit, alert, emerg.
當定義到某一個級别的時候:比這個級别高的都要記錄
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combinedLogFormat "%h %l %u %t \"%r\" %>s %b" common
LogFormat "%{Referer}i -> %U" referer
LogFormat "%{User-agent}i" agent
通路日志:
CustemLog logs/access_log combined
日志檔案 日志格式
<code> </code><code>日志格式中的宏或者其他定義:</code>
<code> </code><code>http://httpd.apache.org/docs/2.2/mod/mod_log_config.html#formats</code>
<code> </code><code>%h:client的IP位址</code>
<code> </code><code>%l:Remote User:通常為一個減号("-")</code>
<code> </code><code>%u:Remote User(from auth;) 非為登入通路時,其為一個減号</code>
<code> </code><code>$t:伺服器收到請求時的時間</code>
<code> </code><code>%r:first line of request,表示請求封包的首行;記錄了請求的“方法”,“URL"以及協定版本号</code>
<code> </code><code>%>s:響應狀态碼</code>
<code> </code><code>%b:響應封包的大小,bytes,不包含http首部</code>
<code> </code><code>%{Referer}i:請求封包中首部"Referer"的值;即從哪個頁面中的超連結跳轉至目前頁面的;</code>
<code> </code><code>%(User-Agent);請求封包中首部"User-Agent"的值,即送出請求的程式</code>
12.基于使用者的通路控制
網站中提供的認證:
1.表單認證
2.http協定自身提供的認證
使用者認證的過程發送的賬号和密碼是明文發送的
認證質詢:www.Authenticate:響應碼為401,拒絕用戶端請求,并說明要求client提供賬号和密碼
認證:Authentication:用戶端使用者填入賬号和密碼後再次發送請求封包;認證通過時,則伺服器發送響應的資源
認證方式:
basic:明文
digest:消息摘要認證
安全域:需要使用者認證後才能通路的路徑;應該通過名稱對其進行辨別,以便于告知使用者認證的原因
使用者的賬号和密碼存放于何處:
虛拟賬号:僅用于通路某網絡服務時用到認證辨別
存儲:
文本檔案;
SQL資料庫;
ldap目錄存儲:
basic認證示例:
1.定義安全域
<code> </code><code><Directory </code><code>""</code> <code>></code>
<code> </code><code>Options None</code>
<code> </code><code>AllowOverride None </code><code>//其他定義的</code>
<code> </code><code>AuthType Basic</code>
<code> </code><code>AuthName </code><code>"String"</code>
<code> </code><code>AuthUserFIle "/path/to/httpd_passwd“</code>
<code> </code><code>require user username1 username2 ...</code>
<code> </code><code>...</code>
<code> </code><code></Directory></code>
<code> </code><code>Require valid-user </code><code>//允許所有使用者</code>
2.提供賬号和密碼存儲(文本檔案)
13.虛拟主機
站點辨別:socket
IP相同:但端口不同
IP不同:但端口相同80/443
FQDN不同:端口和IP相同
請求封包中首部 //對應的是FQDN
Host:www.mt.com
三種實作方案:
基于ip:為每個虛拟主機至少準備一個ip位址
基于port:為每個虛拟使用至少一個獨立Port
基于FQDN:為每個虛拟主機使用至少一個FQDN
注:一般虛拟主機不和中心主機混用,二者選其一
禁用方法:注釋中心主機DocumentRoot指令即可
虛拟主機的配置方法:
<VirtualHost IP:PORT>
ServerName FQDN
DocumentRoot " "
</VirtualHost>
其他可用指令:
ServerAlias:虛拟主機的别名,可使用多次
ErrorLog:專用的錯誤日志
CustomLog:
<Directory ...>
...
</Directory>
Alias 等 //在中心主機中實用的都可以在中心主機上使用
14.status頁面 //不能随意允許使用者通路
<code> </code><code>1.vim httpd.conf 加載子產品</code>
<code> </code><code>LoadModule status_module modules/mod_status.so</code>
<code> </code><code><Location /server-status></code>
<code> </code><code>SetHandler server-status</code>
<code> </code><code>Order deny,allow</code>
<code> </code><code>Allow </code><code>from</code> <code>all</code>
<code> </code><code></Location></code>
<code> </code><code>httpd -t</code>
<code> </code><code>service httpd reload </code>
<code> </code><code>2.http:</code><code>//192.168.4.109/server-status</code>
<code> </code><code>"_"</code> <code>Waiting </code><code>for</code> <code>Connection, </code><code>"S"</code> <code>Starting up, </code><code>"R"</code> <code>Reading Request,</code>
<code> </code><code>"W"</code> <code>Sending Reply, </code><code>"K"</code> <code>Keepalive (read), </code><code>"D"</code> <code>DNS Lookup,</code>
<code> </code><code>"C"</code> <code>Closing connection, </code><code>"L"</code> <code>Logging, </code><code>"G"</code> <code>Gracefully finishing,</code><code>//等待所有請求完成後,關閉連接配接</code>
<code> </code><code>"I"</code> <code>Idle cleanup of worker, </code><code>"."</code> <code>Open slot with no current process</code>
前提:
setenforce 0 //關閉selinux
iptables -F //清空防火牆規則,防止幹擾實驗
實驗1.basic認證
1.vim httpd.conf
<code> </code><code><Directory </code><code>"/var/www/html/admin"</code><code>></code>
<code> </code><code>AllowOverride None</code>
<code> </code><code>AuthName </code><code>"動感地帶 Enter Your name"</code> <code>//提示資訊</code>
<code> </code><code>AuthUserFile </code><code>"/etc/httpd/conf/.htpasswd"</code>
<code> </code><code>Require user tom</code>
<code> </code><code></Directory></code>
httpd -t //檢查文法,測試目錄中的檔案字尾要是.html ,否則會出現登入後“forbidden"
2.建立密碼檔案
htpasswd -c -m .htpasswd tom //第一次用-c,第二次千萬不要用-c
htpasswd -m .htpasswd wolf // tom,wolf,jerry
-m :md5加密存放
-D:删除使用者
-s:sha加密
Require valid-user //任意使用者都可以
3.基于組認證 //失敗
<code> </code><code>AuthUserFile </code><code>"/etc/httpd/conf/.htpasswd"</code>
<code> </code><code>1.AuthGroupFile </code><code>"/path/to/grouop_file"</code>
<code> </code><code>2.Require </code><code>group</code> <code>Group1 group2</code>
<code> </code><code>3.建立使用者賬号群組賬号檔案</code>
<code> </code><code>組檔案:每一行定義一個組</code>
<code> </code><code>GRP_name:username1 username2 ... </code><code>//如此簡單</code>
4.require valid_user //允許任意使用者通路
AuthType隻有兩個:Basic和Diget
mod_auth_basic and by mod_auth_digest
基于組的認證:
<code> </code><code><Directory </code><code>""</code><code>></code>
<code> </code><code>Options None</code>
<code> </code><code>AllowOverride None</code>
<code> </code><code>AuthType Basic</code>
<code> </code><code>AuthName "String“</code>
<code> </code><code>AuthUserFile </code><code>"/PATH/TO/HTTPD_USER_PASSWD_FILE"</code>
<code> </code><code>AuthGroupFile </code><code>"/PATH/TO/HTTPD_GROUP_FILE"</code>
<code> </code><code>Require </code><code>group</code> <code>grpname1 grpname2 ...</code>
<code> </code><code></Directory> </code>
<code><Directory /</code><code>var</code><code>/www/html/upload/></code>
<code> </code><code>Options None</code>
<code> </code><code>AllowOverride None</code>
<code> </code><code>AuthType Basic</code>
<code> </code><code>AuthName </code><code>"Admin Realm"</code>
<code> </code><code>AuthUserFile </code><code>"/etc/httpd/conf/.htpasswd"</code>
<code> </code><code>AuthGroupFile </code><code>"/etc/httpd/conf/.htgroup"</code>
<code> </code><code>Require </code><code>group</code> <code>mygroup</code>
<code></Directory></code>
<code>[root@httpd conf]# cat ./.htgroup </code>
<code>mygroup: tom Jason</code>
<code>othergroup: obama</code>
實驗2:虛拟主機 //一個主機上存放多個網站
一.基于不同ip的虛拟主機 //三個站點使用同一個ip,同一個端口,不同域名
1.:192.168.4.110/109/111
<code> </code><code>mkdir -pv /www/{a.com,b.net,c.org}/hdocs</code>
<code> </code><code>echo </code><code>"a.com"</code> <code>> /www/a.com/hdocs/index.html</code>
<code> </code><code>echo </code><code>"c.org"</code> <code>> /www/c.org/hdocs/index.html</code>
<code> </code><code>echo </code><code>"b.net"</code> <code>> /www/b.net/hdocs/index.html</code>
2.vim httpd.conf
#DocumentRoot "/var/www/html" //注釋
建議建立另外一個檔案
<code> </code><code>vim /etc/httpd/conf.d/virhosts.conf</code>
<code> </code><code><</code><code>VirtualHost</code> <code>192.168.4.109:80></code>
<code> </code><code>ServerName www.a.com</code>
<code> </code><code>DocumentRoot "/www/a.com/hdocs"</code>
<code> </code><code></</code><code>VirtualHost</code><code>></code>
<code> </code><code><</code><code>VirtualHost</code> <code>192.168.4.110:80></code>
<code> </code><code>ServerName www.b.net</code>
<code> </code><code>DocumentRoot "/www/b.net/hdocs"</code>
<code> </code><code><</code><code>VirtualHost</code> <code>192.168.4.111:80></code>
<code> </code><code>ServerName www.c.org</code>
<code> </code><code>DocumentRoot "/www/c.org/hdocs"</code>
httpd -t //檢查文法
警告資訊:
<code>[root@localhost conf.d]# httpd -t</code>
<code>[Fri Nov 24 07:51:47 2017] [warn] VirtualHost 192.168.154.132:80 overlaps with VirtualHost 192.168.154.132:80, the first has precedence, perhaps you need a NameVirtualHost directive</code>
<code>[Fri Nov 24 07:51:47 2017] [warn] NameVirtualHost *:80 has no VirtualHosts</code>
<code>Syntax OK</code>
<code>[root@localhost conf.d]# cat virtualhost.conf </code>
<code>NameVirtualHost 192.168.154.132:80</code>
<code><VirtualHost 192.168.154.132:80></code>
<code> </code><code>Servername wwww.a.com </code>
<code> </code><code>DocumentRoot </code><code>"/var/www/html/a.com"</code>
<code></VirtualHost></code>
<code> </code><code>Servername wwww.b.net </code>
<code> </code><code>DocumentRoot </code><code>"/var/www/html/b.net"</code>
<code> </code><code>Servername wwww.c.org </code>
<code> </code><code>DocumentRoot </code><code>"/var/www/html/c.org"</code>
//改成這樣,或者把ip位址,改為* 就不會出警告資訊了
二. 基于端口 //三個站點,同一個ip,不同端口,不同域名
ifconfig eth0:0 down //建議把那幾個虛拟斷開都關了
<code> </code><code>vim vhosts.conf</code>
<code> </code><code>Listen 888</code>
<code> </code><code>Listen 8888</code>
<code> </code><code><VirtualHost 192.168.4.109:80></code>
<code> </code><code>ServerName www.a.com</code>
<code> </code><code>DocumentRoot </code><code>"/www/a.com/hdocs"</code>
<code> </code><code></VirtualHost></code>
<code> </code><code><VirtualHost 192.168.4.109:888></code>
<code> </code><code>ServerName www.b.net</code>
<code> </code><code>DocumentRoot </code><code>"/www/b.net/hdocs"</code>
<code> </code><code><VirtualHost 192.168.4.109:8888></code>
<code> </code><code>ServerName www.c.org</code>
<code> </code><code>DocumentRoot </code><code>"/www/c.org/hdocs"</code>
httpd -t
service httpd restart
注意:基于端口和基于ip可以混合使用
三.基于FQDN //同端口,同ip,不同域名
1.修改配置
<code> </code><code>NameVirtualHost 192.168.4.109:80</code>
<code> </code><code><</code><code>VirtualHost</code> <code>192.168.4.109:80></code>
<code> </code><code></</code><code>VirtualHost</code><code>></code>
2.修改自己的host檔案,或者改為自己建立的dns
vim hosts
192.168.4.109 www.a.org
192.168.4.109 www.b.net
192.168.4.109 www.c.org
IP: 不同ip,不同域名,端口号可以相同,也可以不同
Port: 同一ip,不同端口,不同域名
FQDN: 同一ip,同一端口,不同域名
實驗3:keepalive的測試
1.另外一條機器安裝telnet,模拟通路server:192.168.4.109
telnet 192.168.4.109 80
GET /index.html HTTP/1.1 //不行的話,可以HTTP/1.0
Host: 192.168.4.109
兩個回車
2.KeepAlive On
service httpd reload
再次測試,擷取到資料後,不會立即斷開
預設逾時時間15s,
keepalive具體可以參考:http://blog.csdn.net/zlxfogger/article/details/44919995
附件:修改alias但是不能通路,alias對應的路徑
Alias /tt/ "/tmp/test/" //放在DocumentRoot之前就可以了
DocumentRoot "/var/www/html"
附件:Could not reliably determine the server's fully quality
vim httpd.conf
ServerName MT:80 //主機名為MT
書籍推薦:<http協定權威指南>
小結:httpd配置
Listen [IP:]PORT
持久連結:
KeepAlive [On|Off]
MPM:
prefork,worker,event
DSO: LoadModule
httpd -l/-M
DocumentRoot
通路控制
1.<Directory>
Options Indexes FollowSymLinks
Order Allow Deny
Allow from
Deny from
2.<Location>
<Location /server-status>
SetHandler server-status
Order deny,allow
Allow from all
</Location>
定義預設首頁面
DirectoryIndex
ErrorLog
CustomLog
LogFormat
%{Referer}i:引用Referer首部的資訊
Alias /URL/ "/path/to/somedir/" //斜線雙方要麼有,要麼都沒有
AddDefaultCharset
基于使用者通路控制
認證方式:basic,digest //主要使用basic
AuthType Basic
AuthName “STIRNG“
AuthUserFile
AuthGroupFile
Require user/group/valid-user //valid有效的,正當的
.htpasswd
htpasswd
虛拟主機:IP,Port,FQDN
本文轉自MT_IT51CTO部落格,原文連結:http://blog.51cto.com/hmtk520/2044059,如需轉載請自行聯系原作者