Linux的愛(ài)之初體驗(yàn)web服務(wù)~~!!?。ㄖ赃@么說(shuō)我覺(jué)得這是進(jìn)入Linux世界的第一個(gè)也是重要的一個(gè)服務(wù))
創(chuàng)新互聯(lián)公司-專業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設(shè)、高性價(jià)比海東網(wǎng)站開(kāi)發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫(kù),直接使用。一站式海東網(wǎng)站制作公司更省心,省錢,快速模板網(wǎng)站建設(shè)找我們,業(yè)務(wù)覆蓋海東地區(qū)。費(fèi)用合理售后完善,10余年實(shí)體公司更值得信賴。
文章叫長(zhǎng),懂的隨便看看可能有不對(duì)的地方請(qǐng)校正。小白看看也可以理解理解大白話寫(xiě)的!
http 超文本傳輸協(xié)議筆記
傳輸層:tcp/udp提供進(jìn)程地址
Port number:
tcp:傳輸控制協(xié)議,面向連接的協(xié)議;通信前需要建立虛擬鏈路;結(jié)束后拆除鏈路;數(shù)據(jù)流通信協(xié)議
0-65535 Linux中端口數(shù)
udp:User Datagram Protocol,無(wú)連接的協(xié)議;無(wú)連接的數(shù)據(jù)報(bào)文通信協(xié)議
0-65535
IANA:
0-1023:眾所周知,永久的分配給固定的應(yīng)用使用,特權(quán)端口,22/tcp(ssh), 80/tcp(http), 443/tcp(https) 只有管理員擁有權(quán)限注冊(cè)使用
1024-41951:亦為注冊(cè)端口,但要求并不是特別嚴(yán)格,分配給程序注冊(cè)為某應(yīng)用使用,11211/tcp, 11211/udp (memcached), 3306/tcp(MySQL)
41952+:客戶端程序隨機(jī)使用的端口;動(dòng)態(tài)端口,或私有端口;其范圍的定義:/proc/sys/net/ipv4/ip_local_port_range
客戶端訪問(wèn)服務(wù)器端隨機(jī)生成端口,訪問(wèn)服務(wù)器端的某固定端口。
套接字Socket: IPC的一種實(shí)現(xiàn),允許位于不同主機(jī)(甚至同一主機(jī))上不同進(jìn)程之間進(jìn)行通信;從而完成數(shù)據(jù)交換;也稱為Socket API庫(kù)調(diào)用接口,第一次出現(xiàn)在1983年,4.2 BSD系統(tǒng)上(伯克利系統(tǒng)分發(fā)版)。
SOCK_STREAM:tcp套接字
SOCK_DGRAM:udp套接字
SOCK_RAW: 裸套接字(不借助UDP/TCP的接口進(jìn)行通信)
IPv4:
分類:
A:1-127
B:128-191
C:192-223
D:組播,224-239
E:240-254
私有地址:
A:10.0.0.0/8
B:172.16.0.0/16-172.31.0.0/16
C:192.168.0.0/24-192.168.255.0/24
TCP協(xié)議的特性:
建立連接:三次握手
將數(shù)據(jù)打包成段:校驗(yàn)和(CRC-32)循環(huán)冗余檢驗(yàn)
確認(rèn)、重傳以及超時(shí):
報(bào)文排序:邏輯序號(hào)
流量控制:滑動(dòng)窗口算法(有接收緩存控制,快滿時(shí)暫停接收)發(fā)送方流量小的情況下
擁塞控制:慢啟動(dòng)和擁塞避免算法
Socket Domain(根據(jù)其所使用的地址):socket又分為三類
AF_INET:Address Family,IPv4
AF_INET6:IPv6
AF_UNIX:同一主機(jī)上不同進(jìn)程之間通信時(shí)使用;
每類套接字都至少提供了兩種socket:流,數(shù)據(jù)報(bào)
流:可靠地傳遞、面向連接、無(wú)邊界;
數(shù)據(jù)報(bào):不可靠地傳遞、有邊界、無(wú)連接;(比如寄信,有信封,封裝多封就需要多個(gè))
套接字相關(guān)的系統(tǒng)調(diào)用:
socket(): 創(chuàng)建一個(gè)套接字;
bind():綁定
listen():監(jiān)聽(tīng)
accept():接收請(qǐng)求
connect():請(qǐng)求連接建立
write():發(fā)送
read():接收
send(), recv(), 發(fā)接
sendto(), recvfrom() 發(fā)接
HTTP協(xié)議
http: hyper text transfer protocol, 80/tcp
html: 編程語(yǔ)言,超文本標(biāo)記語(yǔ)言;
blabla... blabal
CSS: Cascading Style Sheet 級(jí)聯(lián)樣式表
js: javascript
MIME: Multipurpose Internet Mail Extesion多用途Internet郵件擴(kuò)展
工作機(jī)制:
http請(qǐng)求
http響應(yīng)
被請(qǐng)求的內(nèi)容稱為:Web資源:web resource
靜態(tài)文件:.jpg, .gif, .html, .txt, .js, .css, .mp3, .avi
動(dòng)態(tài)文件:.php, .jsp, (客戶端請(qǐng)求時(shí)不是直接反饋給客戶端而是先在服務(wù)器端執(zhí)行一次)
(比如:Windows瀏覽器需要借助外部插件來(lái)工作,瀏覽器本身不具備打開(kāi)圖片或視頻等而且根據(jù)文件的后綴名來(lái)決定借助由客戶端的某個(gè)插件來(lái)打開(kāi))
媒體:決定了客戶端的瀏覽器如何打開(kāi)借助那個(gè)插件
媒體類型(MIME類型):major/minor(主類型/次類型)
text/html 超文本文檔
text/plain 純文本文檔
p_w_picpath/jpeg
p_w_picpath/gif
URI: Uniform Resource Identifier統(tǒng)一資源標(biāo)識(shí)符
URL: Uniform Resorce Locator,用于描述某服務(wù)器某特定資源的位置;
Scheme://Server:Port/path/to/resource
http://www.magedu.com/p_w_picpaths/logo.jpg
URN: Uniform Resource Naming統(tǒng)一資源命名
http協(xié)議版本:
HTTP/0.9:原型版本,功能簡(jiǎn)陋
HTTP/1.0:第一個(gè)廣泛使用的版本,支持MIME
HTTP/1.1: 增強(qiáng)了緩存功能
Spdy
HTTP/2.0:
rfc文檔讀一讀有助于了解 1.1 2.0
一次完整的http請(qǐng)求處理過(guò)程:
(1) 建立或處理連接:接收請(qǐng)求或拒絕請(qǐng)求
(2) 接收請(qǐng)求:
接收來(lái)自于網(wǎng)絡(luò)的請(qǐng)求報(bào)文中對(duì)某資源的一次請(qǐng)求的過(guò)程;
并發(fā)訪問(wèn)響應(yīng)模型(Web I/O):
單進(jìn)程I/O結(jié)構(gòu):?jiǎn)?dòng)一個(gè)進(jìn)程處理用戶請(qǐng)求,而且一次只處理一個(gè);多個(gè)請(qǐng)求被串行響應(yīng);(多個(gè)請(qǐng)求到來(lái)排隊(duì),依次處理)
多進(jìn)程I/O結(jié)構(gòu):并行啟動(dòng)多個(gè)進(jìn)程,每個(gè)進(jìn)程響應(yīng)一個(gè)請(qǐng)求;
復(fù)用I/O結(jié)構(gòu):一個(gè)進(jìn)程響應(yīng)n個(gè)請(qǐng)求;(借用一個(gè)復(fù)用I/O 處理器基于事件驅(qū)動(dòng)機(jī)制)
多線程模型:一個(gè)進(jìn)程生成N個(gè)線程,每個(gè)線程響應(yīng)一個(gè)用戶請(qǐng)求;
事件驅(qū)動(dòng):event-driven(一個(gè)進(jìn)程內(nèi)部維持一個(gè)類似事件監(jiān)控器,能夠監(jiān)控著多個(gè)I/O使得一個(gè)服務(wù)器進(jìn)程能夠同時(shí)連接多個(gè)請(qǐng)求)針對(duì)怎么知道每一個(gè)請(qǐng)求的連接與結(jié)束,在服務(wù)器編程時(shí)在內(nèi)部基于事件回調(diào)的機(jī)制來(lái)完成連接狀態(tài)(i/o)的追蹤,并基于回調(diào)的狀態(tài)來(lái)完成連接與結(jié)束的響應(yīng)。
復(fù)用的多進(jìn)程/線程--I/O結(jié)構(gòu):?jiǎn)?dòng)多個(gè)(m)進(jìn)程,每個(gè)進(jìn)程響應(yīng)n個(gè)請(qǐng)求;
(3) 處理請(qǐng)求:對(duì)請(qǐng)求報(bào)文進(jìn)行解析,并獲取請(qǐng)求的資源及請(qǐng)求方法等相關(guān)信息
元數(shù)據(jù):請(qǐng)求報(bào)文首部
Host: www.magedu.com 請(qǐng)求的主機(jī)名稱
Connection://指明此次連接使用的方式
(4) 訪問(wèn)資源:獲取請(qǐng)求報(bào)文中請(qǐng)求的資源
web服務(wù)器,即存放了web資源的服務(wù)器,負(fù)責(zé)向請(qǐng)求者提供對(duì)方請(qǐng)求的靜態(tài)資源,或動(dòng)態(tài)運(yùn)行后生成的資源;這些資源放置于本地文件系統(tǒng)某路徑下,此路徑通常稱為DocRoot
/var/www/html/
p_w_picpaths/1.jpg
http://www.magedu.com/p_w_picpaths/1.jpg
web服務(wù)器資源路徑映射方式:
(a) docroot
(b) alias
(c) 虛擬主機(jī)docroot
(d) 用戶家目錄docroot
(5) 構(gòu)建響應(yīng)報(bào)文
資源的MIME類型:標(biāo)記的方法
顯式分類
魔法分類
協(xié)商分類
URL重定向:
web服務(wù)構(gòu)建的響應(yīng)并非客戶端請(qǐng)求的資源,而是資源另外一個(gè)訪問(wèn)路徑;
(6) 發(fā)送響應(yīng)報(bào)文
(7) 記錄日志
http服務(wù)器程序:
httpd (apache)
nginx
Lighttpd //德國(guó)人研發(fā)輕量級(jí)類似Nginx
應(yīng)用程序服務(wù)器(容器類):動(dòng)靜都能解析
IIS
tomcat, jetty, jboss, resin
webshpere, weblogic, oc4j
www.netcraft.com //查看一些web服務(wù)器占用市場(chǎng)的份額
httpd的安裝配置和使用:
httpd: apache
a patchy server = apache
ASF: apache software foundation //軟件基金會(huì)
httpd的特性:
高度模塊化:core + modules
DSO: Dynamic Shared Object 動(dòng)態(tài)模塊機(jī)制
MPM:Multipath Processing Modules 實(shí)現(xiàn)多種不同I/O模型機(jī)制
prefork:多進(jìn)程模型,每個(gè)進(jìn)程響應(yīng)一個(gè)請(qǐng)求;每個(gè)主進(jìn)程只負(fù)責(zé)監(jiān)聽(tīng)套接字,接收請(qǐng)求交給子進(jìn)程處理請(qǐng)求。
一個(gè)主進(jìn)程:負(fù)責(zé)生成n個(gè)子進(jìn)程,子進(jìn)程也稱為工作進(jìn)程,每個(gè)子進(jìn)程處理一個(gè)用戶請(qǐng)求;即便沒(méi)有用戶請(qǐng)求,也會(huì)預(yù)先生成多個(gè)空閑進(jìn)程,隨時(shí)等待請(qǐng)求到達(dá);最大不會(huì)超過(guò)1024個(gè);
worker:多線程模型,每個(gè)線程響應(yīng)一個(gè)請(qǐng)求;
一個(gè)主進(jìn)程:生成多個(gè)子進(jìn)程,每個(gè)子進(jìn)程負(fù)責(zé)生個(gè)多個(gè)線程,每個(gè)線程響應(yīng)一個(gè)請(qǐng)求;
event:事件驅(qū)動(dòng)模型,每個(gè)線程響應(yīng)n個(gè)請(qǐng)求;
一個(gè)主進(jìn)程:生成m個(gè)子進(jìn)程,每個(gè)進(jìn)程直接n個(gè)請(qǐng)求;
m進(jìn)程,n線程:m*n
httpd-2.2: event為測(cè)試使用
httpd-.24:event可生產(chǎn)使用
CentOS 6:
程序環(huán)境
配置文件:
/etc/httpd/conf/httpd.conf
/etc/httpd/conf.d/*.conf //補(bǔ)充性配置文件
服務(wù)腳本:
/etc/rc.d/init.d/httpd
服務(wù)腳本自己的配置文件:/etc/sysconfig/httpd
主程序文件:
/usr/sbin/httpd //prefork 默認(rèn)使用的
/usr/sbin/httpd.event //event
/usr/sbin/httpd.worker //worker
日志文件目錄:
/var/log/httpd
access_log: 訪問(wèn)日志
error_log:錯(cuò)誤日志 //啟動(dòng)停止訪問(wèn)錯(cuò)誤等信息
站點(diǎn)文檔目錄:
/var/www/html
模塊文件路徑:
/usr/lib64/httpd/modules
配置文件的組成:
~]# grep "Section" /etc/httpd/conf/httpd.conf
### Section 1: Global Environment //全局環(huán)境配置
### Section 2: 'Main' server configuration //主服務(wù)器配置
### Section 3: Virtual Hosts ///虛擬主機(jī)配置
配置格式:directive value 指令對(duì)應(yīng)的值來(lái)完成 比如listen 80
directive: 不區(qū)分字符大小寫(xiě);
value: 為路徑時(shí),取決于文件系統(tǒng);
常用配置:修改完配置文件 httpd -t 或者service httpd configtest測(cè)試語(yǔ)法
1、修改監(jiān)聽(tīng)的IP和Port //修改監(jiān)聽(tīng)端口需要restart
Listen [IP:]PORT
省略ip表示監(jiān)聽(tīng)本機(jī)所有IP; Listen可重復(fù)出現(xiàn)多次;
2、持久連接
Persistent Connection(長(zhǎng)連接):連接建立,每個(gè)資源獲取完成后不會(huì)斷開(kāi)連接,而是繼續(xù)等待其它的請(qǐng)求完成;
如何斷開(kāi)?
數(shù)量限制:100 資源請(qǐng)求默認(rèn)100
時(shí)間限制:可配置
副作用:對(duì)并發(fā)訪問(wèn)量較大的服務(wù)器,持久連接功能會(huì)使用有些請(qǐng)求得不到響應(yīng);
折衷:使用較短的持久連接時(shí)間;5秒
httpd-2.4 支持毫秒級(jí)持久時(shí)間;
非持久連接
KeepAlive On|Off //是否開(kāi)啟
MaxKeepAliveRequests # //最大連接請(qǐng)求數(shù)量
KeepAliveTimeout # //連接超時(shí)
測(cè)試:
telnet HOST PORT
GET /URL HTTP/1.1
Host: HOSTNAME or IP
3、MPM
Multipath Process Module:多道處理模塊
prefork, worker, event
httpd-2.2不支持同時(shí)編譯多個(gè)模塊,所以只能編譯時(shí)選定一個(gè);rpm安裝的包提供三個(gè)二進(jìn)制程序文件,分別用于實(shí)現(xiàn)對(duì)不同MPM機(jī)制的支持;確認(rèn)方法:
# ps aux | grep httpd
默認(rèn)為/usr/sbin/httpd, 其使用prefork
查看模塊列表:
查看靜態(tài)編譯的模塊
# httpd -l ///httpd.worker -l///httpd.event -l
Compiled in modules:
Core.c //核心模塊
Prefork.c /已經(jīng)使用的
http_core.c //功能核心模塊
mod_so.c //支持模塊動(dòng)態(tài)裝卸載的功能
查看所有靜態(tài)編譯及動(dòng)態(tài)裝載的模塊
# httpd -M
更換使用的httpd程序:
/etc/sysconfig/httpd
HTTPD=
重啟服務(wù)生效;
prefork的配置:
StartServers 8 //服務(wù)啟動(dòng)時(shí)啟動(dòng)多少服務(wù)子進(jìn)程
MinSpareServers 5 //最小空閑進(jìn)程數(shù)
MaxSpareServers 20 //最大空閑進(jìn)程數(shù)
ServerLimit 256 ///在服務(wù)器聲明周期內(nèi)為MaxClients生成數(shù)量
MaxClients 256 ///最大并發(fā)數(shù)
MaxRequestsPerChild 4000 //一個(gè)進(jìn)程最多能夠響應(yīng)多少次請(qǐng)求然后死掉
worker的配置:
StartServers 4 //服務(wù)啟動(dòng)時(shí)啟動(dòng)多少服務(wù)子進(jìn)程
MaxClients 300 ///最大并發(fā)數(shù),最大啟動(dòng)的線程數(shù)
MinSpareThreads 25 //最少空閑線程
MaxSpareThreads 75 //最大空閑線程
ThreadsPerChild 25 //每個(gè)進(jìn)程能夠啟動(dòng)的線程數(shù)
MaxRequestsPerChild 0 //每個(gè)線程最大響應(yīng)的請(qǐng)求數(shù)
PV, UV
PV: Page View 頁(yè)面訪問(wèn)量
UV: User View 用戶數(shù)量
獨(dú)立IP有效訪問(wèn)量;
4、DSO
配置指令實(shí)現(xiàn)模塊加載
LoadModule
模塊路徑可使用相對(duì)地址
相對(duì)于ServerRoot(/etc/httpd)指向的路徑而言;
/etc/httpd/modules/
5、定義'Main' server的文檔頁(yè)面路徑
DocumentRoot
文檔路徑映射:
DocumentRoot指向的路徑為URL路徑的起始位置;
DocumentRoot "/var/www/html"
test/index.html --> http://HOST:PORT/test/index.html
6、站點(diǎn)訪問(wèn)控制
可基于兩種類型的路徑指明對(duì)哪些資源進(jìn)行訪問(wèn)控制
文件系統(tǒng)路徑:
訪問(wèn)控制機(jī)制:
基于來(lái)源地址;
基于賬號(hào);
7、Directory中“基于來(lái)源地址”實(shí)現(xiàn)訪問(wèn)控制
(1) Options 建議關(guān)閉(如果是下載網(wǎng)站打開(kāi)不指定默認(rèn)網(wǎng)頁(yè)可以打開(kāi)網(wǎng)站上資源,非下載網(wǎng)站是不安全的在沒(méi)有定義默認(rèn)頁(yè)的情況下同事http的也沒(méi)有做測(cè)試頁(yè)客戶端打開(kāi)網(wǎng)站會(huì)獲取服務(wù)器端的所有網(wǎng)站資源)
比如默認(rèn)根目錄下存放的沒(méi)有默認(rèn)定義的主頁(yè)面(index.html)就會(huì)索引到根目錄下其他的文檔。
所有可用特性:Indexes Includes FollowSymLinks SymLinksifOwnerMatch ExecCGI MultiViews
None, All
Indexes: 索引;//當(dāng)訪問(wèn)網(wǎng)站目錄下默認(rèn)主頁(yè)面
FollowSymlinks:允許跟蹤符號(hào)鏈接文件;允許訪問(wèn)網(wǎng)站中根目錄下作鏈接的文件
SymLinksifOwnerMatch: 允許追蹤鏈接文件和源文件為同一屬主就允許(使用少)
MultiViews: 是否允許多視圖(不開(kāi)啟)(使用少)
(2) 基于來(lái)源地址的訪問(wèn)控制機(jī)制
Order:檢查次序
Order allow,deny
Order deny,allow
Allow from
Deny from
來(lái)源地址:
IP
NetAddr:
172.16
172.16.0.0
172.16.0.0/16
172.16.0.0/255.255.0.0
8、定義默認(rèn)主頁(yè)面 訪問(wèn)沒(méi)有指明自左向右訪問(wèn)
DirecotryIndex index.html index.html.var index.php
9、日志設(shè)定
錯(cuò)誤日志:
ErrorLog logs/error_log
LogLevel warn
debug, info, notice, warn, error, crit, alert, emerg
調(diào)試信息、通知、警告、 錯(cuò)誤、暴擊、警報(bào)、緊急
定義warn那么比warn高的級(jí)別都將記錄。
訪問(wèn)日志:
CustomLog logs/access_log combined
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
%h:客戶端IP地址;
%l: Remote logname (from identd, if supplied). -表示為空;遠(yuǎn)程登錄名大多數(shù)為空
%u: Remote user, (from auth; may be bogus if return status (%s) is 401);用戶認(rèn)證時(shí)的用戶名 大多數(shù)無(wú)需認(rèn)證-表示為空
%t:Time the request was received (standard english format),服務(wù)器收到請(qǐng)求的時(shí)間;默認(rèn)為英文格式
%r:First line of request,請(qǐng)求報(bào)文的首行信息(請(qǐng)求的URL以及協(xié)議版本等)(method url version);
%>s: 響應(yīng)狀態(tài)碼;
%b: 響應(yīng)報(bào)文的大小,單位是字節(jié),不包括響應(yīng)報(bào)文首部;
%{Referer}i:請(qǐng)求報(bào)文當(dāng)中"referer"首部的值;當(dāng)前資源的訪問(wèn)入口,即從哪個(gè)頁(yè)面中的超鏈接跳轉(zhuǎn)而來(lái);
%{User-Agent}i:請(qǐng)求報(bào)文當(dāng)中"User-Agent"首部的值;即發(fā)出請(qǐng)求用到的應(yīng)用程序;
詳情:http://httpd.apache.org/docs/2.2/mod/mod_log_config.html#formats
10、路徑別名
DocumentRoot "/www/htocs"
http://www.magedu.com/download/bash-4.4.2-3.el6.x86_64.rpm
--> /www/htdocs/download/bash-4.4.2-3.el6.x86_64.rpm
Alias /URL/ "/PATH/TO/SOMEDIR/"
Alias /3/ "/1/2"
http://www.magedu.com/3/index.html
--> /1/2/3/
Alias /bbs/ "/forum/htdocs"
http://www.magedu.com/bbs/index.html
--> /forum/htdocs/bbs/
11、設(shè)定默認(rèn)字符集
AddDefaultCharset UTF-8
GBK, GB2312, GB18030 中文字符
12、基于用戶的訪問(wèn)控制
認(rèn)證質(zhì)詢:
WWW-Authenticate:響應(yīng)碼為401,拒絕客戶端請(qǐng)求,并說(shuō)明要求客戶提供賬號(hào)和密碼;
認(rèn)證:
Authorization:客戶端用戶填入賬號(hào)和密碼后再次發(fā)送請(qǐng)求報(bào)文;認(rèn)證通過(guò),則服務(wù)器發(fā)送響應(yīng)的資源;
認(rèn)證類型:
basic:明文
digest:消息摘要
安全域:需要用戶認(rèn)證后方能訪問(wèn)的路徑;
應(yīng)該通過(guò)名稱對(duì)其進(jìn)行標(biāo)識(shí),并用于告知用戶認(rèn)證的原因;
用戶的賬號(hào)和密碼存儲(chǔ)于何處?
虛擬賬號(hào):僅用于訪問(wèn)某服務(wù)時(shí)用到的認(rèn)證標(biāo)識(shí);
存儲(chǔ):
文本文件
SQL數(shù)據(jù)庫(kù)
ldap
nis
basic認(rèn)證:
(1) 定義安全域
Options None
AllowOverride None
AuthType Basic
AuthName "STRING" ///安全域名稱
AuthUserFile "/PATH/TO/HTTPD_USER_PASSWD_FILE" //認(rèn)證時(shí)使用的賬號(hào)文件
Require user username1 username2 ... //所有合法(允許)賬號(hào)都行
允許賬號(hào)文件中的所有用戶登錄訪問(wèn):
Requirevalid-user
(2) 提供賬號(hào)和密碼存儲(chǔ)(文本文件)
使用htpasswd命令進(jìn)行管理
htpasswd [options] passwordfile username
-c: 自動(dòng)創(chuàng)建passwordfile,因此,僅應(yīng)該在添加第一個(gè)用戶時(shí)使用;
-m: md5加密用戶密碼;
-s: sha1加密用戶密碼;
-D: 刪除指定用戶
(3) 實(shí)現(xiàn)基于組進(jìn)行認(rèn)證
Options None
AllowOverride None
AuthType Basic
AuthName "STRING"
AuthUserFile "/PATH/TO/HTTPD_USER_PASSWD_FILE"
AuthGroupFile "/PATH/TO/HTTPD_GROUP_FILE"
Require group GROUP1 GROUP2 ...
要提供:用戶賬號(hào)文件和組文件;
組文件:每一行定義一個(gè)組
GRP_NAME:user1 user2 user3 ... 組名 冒號(hào) 用戶名用空格分隔
示例:
Options None
AllowOverride None
AuthType Basic
AuthName "Administator private"
AuthUserFile "/etc/httpd/conf.d/.htpasswd"
AuthGroupFile "/etc/httpd/conf.d/.htgroup"
Require group webadmin
13、虛擬主機(jī)
有三種實(shí)現(xiàn)方案:
基于ip:
為每個(gè)虛擬主機(jī)準(zhǔn)備至少一個(gè)ip地址;
基于port:
為每個(gè)虛擬主機(jī)準(zhǔn)備至少一個(gè)專用port;實(shí)踐中很少使用;
基于hostname:
為每個(gè)虛擬主機(jī)準(zhǔn)備至少一個(gè)專用hostname;
可混合使用上述三種方式中任意方式;
注意:一般虛擬主機(jī)莫與中心主機(jī)混用,所以,要使用虛擬主機(jī),先禁用中心主機(jī);
禁用中心主機(jī):注釋DocumentRoot
每個(gè)虛擬主機(jī)都有專用配置:
SeverName
DocumentRoot ""
ServerAlias: 虛擬主機(jī)的別名;以下這些都可以定義在虛擬主機(jī)中
ErrorLog
CustomLog
ip addr add [ip/mask] dev eth0 /添加新的IP
Ip addr list //查看
示例1:基于ip
ServerName web1.magedu.com
DocumentRoot "/vhosts/web1/htdocs"
ServerName web2.magedu.com
DocumentRoot "/vhosts/web2/htdocs"
示例2:基于port
ServerName web2.magedu.com
DocumentRoot "/vhosts/web2/htdocs"
ServerName web3.magedu.com
DocumentRoot "/vhosts/web3/htdocs"
示例3:基于hostname
ServerName web1.magedu.com
DocumentRoot "/vhosts/web1/htdocs"
ServerName web2.magedu.com
DocumentRoot "/vhosts/web2/htdocs"
ServerName web3.magedu.com
DocumentRoot "/vhosts/web3/htdocs"
14、內(nèi)置的status頁(yè)面 //內(nèi)置狀態(tài)頁(yè)面
SetHandler server-status
Order deny,allow
Deny from all
Allow from 172.16
實(shí)現(xiàn):基于賬號(hào)實(shí)現(xiàn)訪問(wèn)控制