一、HTTPD特性
讓客戶滿意是我們工作的目標,不斷超越客戶的期望值來自于我們對這個行業(yè)的熱愛。我們立志把好的技術(shù)通過有效、簡單的方式提供給客戶,將通過不懈努力成為客戶在信息化領(lǐng)域值得信任、有價值的長期合作伙伴,公司提供的服務(wù)項目有:國際域名空間、雅安服務(wù)器托管、營銷軟件、網(wǎng)站建設(shè)、梁河網(wǎng)站維護、網(wǎng)站推廣。httpd:特性
1.事先創(chuàng)建進程:在請求來之前,創(chuàng)建進程監(jiān)聽,加快響應(yīng)速度
2.按需維持適當(dāng)?shù)倪M程
3.模塊設(shè)計,核心比較小,各個功能都可以按照模塊添加
4.支持多種方式的虛擬主機配置:
Socket IP:Port
1.基于IP的虛擬主機(如果一個server有多個ip,而在互聯(lián)網(wǎng)上,每個IP每年都需要一定的費用)
2.基于端口的虛擬主機(如果不是標準的80端口,那么別人無法知道到底使用的是啥端口)
3.基于域名的虛擬主機(比較好的選擇)
protocol://host:port/path/to/source
=================
Method URL version
header
body
=================
GET /download/linux.tar.bz2 HTTP/1.0
Host: www.harry.com
4.支持https協(xié)議(mod_ssl)
5.支持用戶認證
6.支持基于IP或主機名的ACL
7.支持每目錄的訪問控制
8.支持URL重寫
二、HTTPD安裝
1.rpm包
httpd:
/usr/sbin/httpd(MPM: prefork)
httpd: root,root(master process)
httpd: apache,apache(worker process)
/etc/rc.d/init.d/httpd (啟動腳本)
port:(http: 80/tcp)(https: 443/tcp)
/ec/httpd:工作根目錄,相當(dāng)于程序安裝目錄
/etc/httpd/conf:配置文件目錄
httpd.conf主配置文件(以段文件分散到conf.d目錄下,以include引入)
conf.d/*.conf
/etc/httpd/modules:模塊路徑(都是連接)
/etc/httpd/logs:->/var/log/httpd:日志目錄
日志文件有兩類:訪問日志access_log錯誤日志err_log
/var/www: 資源文件目錄
html :靜態(tài)文件路徑
cgi-bin:動態(tài)文件路徑
cgi: Common Gateway Interface httpd通過cgi和各個模塊進行通信
client --> httpd(index.cgi) --> spawn process(index.cgi) --> httpd --> client
perl, python, java(servlet,jsp), php
cgi工作原理:
1.一個動態(tài)請求到Web Server,Web Server判斷cgi類型,創(chuàng)建對應(yīng)的cgi進程來處理動態(tài)請求,并返回html給Web Server,Web Server響應(yīng)client。動態(tài)cgi進程銷毀
2.fast-cgi:cgi進程池,由master-workers模式
一個動態(tài)請求Web Server,Web Server和master進程通信由master分配給worker進程,來處理
這樣Web Server與cgi可以部署在不同Server上
動靜分離:
----->|------- | |------------|
|Apache|| 應(yīng)用服務(wù)器|
| 如果是靜態(tài)的,|
則直接返回
|
如果是動態(tài)的,
則請求應(yīng)用服務(wù)器------>||
| -------- |
httpd是不處理動態(tài)文件的,而是通過調(diào)用模塊,處理,并返回靜態(tài)文件
2.源碼編譯
三、Global配置
[root@hfdb0001conf]#pwd /etc/httpd/conf [root@hfdb0001conf]#grep"Section*"httpd.conf=>可以看出配置主要有三段。 ###Section1:GlobalEnvironment=>全局配置項 ###Section2:\'Main\'serverconfiguration=>主Server配置 ###Section3:VirtualHosts=>虛擬主機配置(與主Server配置不能同時生效)
ServerTokens OS
http://httpd.apache.org/docs/2.2/zh-cn/mod/core.html#servertokens
ServerTokens Major|Minor|Min[imal]|Prod|[uctOnly]|OS|Full
#超時時間 TCP相關(guān)的,如TCP第一次握手后,就不在請求了。
Timeout 120
KeepAlive Off#如果服務(wù)器的訪問不大,則需要打開長連接
MaxKeepAliveRequests 100
KeepAliveTimeout 15
#是否使用長連接(tcp連接每次都需要3次握手,而長連接,則第一次三次握手后,一直保持連接狀態(tài)),如果是KeepAlive On,則需要定義MaxKeepAliveRequests 100(即該連接打開后,最多能請求的資源數(shù),不能無盡的請求)。這樣一個用戶請求都會最多能請求100個。 KeepAliveTimeout 15.當(dāng)用戶擁有一個長連接,但是并不請求,15s后,即自我銷毀了。
#對于繁忙的Server可以降低KeepAliveTimeout的值,可以提高并發(fā)
#eg 當(dāng)?shù)谝粋€請求到來,獲取一個長連接,他最多能請求100個,到了后,就會斷開連接,重新排隊。這樣下一個請求就能回的連接,請求資源,不然,第一個請求永遠擁有連接,除非自我斷開。
MPM:Multi-Processing Modules(可以切換,通過配置文件修改)
當(dāng)并發(fā)請求時,Server是如何工作的
1.mpm_winnt
2.prefork(一個請求用一個進程響應(yīng))=>預(yù)先會生成多個進程,每個進程響應(yīng)一個請求
3.worker (一個請求用一個線程響應(yīng))=>生成多個進程,進程不處理,每個進程生成多個線程,每個線程來處理請求
多線程共享。當(dāng)同一個進程下的線程已經(jīng)打開了文件,其他線程和讀取,但是存在競爭。需要枷鎖。
4.event (一個進程處理多個請求)
[root@hfdb0001conf]#httpd-l=>查看所有的模塊,可以看到當(dāng)前只支持prefork模型 Compiledinmodules: core.c prefork.c http_core.c mod_so.c [root@hfdb0001conf]#rpm-qlhttpd|grepbin /usr/sbin/apachectl /usr/sbin/htcacheclean /usr/sbin/httpd=>是默認的,prefork /usr/sbin/httpd.event /usr/sbin/httpd.worker=>可以看出Server是支持worker,event的。 /usr/sbin/httxt2dbm /usr/sbin/rotatelogs /usr/sbin/suexec [root@hfdb0001conf]#httpd.worker-l Compiledinmodules: core.c worker.c http_core.c mod_so.c 我們可以修改配置文件,使得http.worker是默認的 [root@hfdb0001conf]#cat/etc/sysconfig/httpd #Configurationfileforthehttpdservice. # #Thedefaultprocessingmodel(MPM)istheprocess-based #\'prefork\'model.Athread-basedmodel,\'worker\',isalso #available,butdoesnotworkwithsomemodules(suchasPHP). #Theservicemustbestoppedbeforechangingthisvariable. # #HTTPD=/usr/sbin/httpd.worker ....
prefork:
<IfModuleprefork.c> StartServers8=>service啟動后,會創(chuàng)建8個進程 MinSpareServers5=>最小空閑進程(當(dāng)有4個請求后,會重新創(chuàng)建一個,保持最少5個) MaxSpareServers20=>空閑進程(當(dāng)100個進程空閑后,會被kill,至20個,即最多20個) ServerLimit256=> MaxClients256=>最多可以處理256個請求,多余的請求排隊MaxClients<ServerLimit MaxRequestsPerChild4000=>一個進程最多能響應(yīng)多少次請求(當(dāng)一個進程響應(yīng)請求后,空閑了,還沒有被kill,此時又有請求過來,并響應(yīng),那么該進程響應(yīng)次數(shù)就加1,當(dāng)達到4000后,無論如何都會被kill,再可能會生成新進程來響應(yīng)) </IfModule> [root@hfdb0001conf]#psaux|grephttpd=>可以看到初始是8個httpd root131800.00.01757243712?Ss03:520:00/usr/sbin/httpd=>主進程,不處理請求 apache131820.00.01758603032?S03:520:00/usr/sbin/httpd apache131830.00.01758603036?S03:520:00/usr/sbin/httpd apache131840.00.01757242940?S03:520:00/usr/sbin/httpd apache131850.00.01757242940?S03:520:00/usr/sbin/httpd apache131860.00.01758602960?S03:520:00/usr/sbin/httpd apache131870.00.01758602964?S03:520:00/usr/sbin/httpd apache131880.00.01757242516?S03:520:00/usr/sbin/httpd apache131890.00.01757242516?S03:520:00/usr/sbin/httpd
worker:
<IfModuleworker.c> StartServers4=>初始生成進程數(shù),到不夠是,會創(chuàng)建新的進程,并生成線程 MaxClients300 MinSpareThreads25=>最小空閑線程數(shù)(是所有的進程數(shù)的總和) MaxSpareThreads75=>空閑線程數(shù) ThreadsPerChild25=>每個進程最多能生成多少個線程 MaxRequestsPerChild0=>每個進程最多能響應(yīng)多少個響應(yīng),由于是有線程響應(yīng)的,則不做控制,即為0 </IfModule>
Listen80 => 監(jiān)聽該Server上所有的80 端口
Listen 8080=>可以監(jiān)聽多個端口
Listten x.x.x.x:8181=> 可以指定IP:端口
Includeconf.d/*.conf=>加載conf.d目錄下所有conf文件(以段文件形式)
LoadModulepath/to/...so
Userapache
Groupapache=>所有的httpd進程,只有一個是root:root權(quán)限啟動的,其他的都是apache:apache權(quán)限
四、虛擬主機配置概述
Socket IP:Port
1.基于IP的虛擬主機(如果一個server有多個ip,而在互聯(lián)網(wǎng)上,每個IP每年都需要一定的費用)
IP1:80
IP2:80
....:80
2.基于端口的虛擬主機(如果不是標準的80端口,那么別人無法知道到底使用的是啥端口,互聯(lián)網(wǎng)上不好適用)
IP:80
IP:8080
3.基于域名的虛擬主機(比較好的選擇)
IP:80
主機名不同(不同的主機名會被解析到同一個IP和端口上)
www.harry1.com=>都會被解析到IP:80上
www.harry2.com=>都會被解析到IP:80上
通過HTTP協(xié)議的請求頭的host: 來判斷到底訪問的那臺主機
ServerName:www.harry1.com
ServerAlias:www.harry11.com=> 當(dāng)想www.harry1.com和 www.harry11.com是同一個Server時
DocuemtRoot/www/harry1.com/
<Directoy "/www/harry1.com">=> 本地文件系統(tǒng)的路徑
.....
.....
</Directoy>
當(dāng)訪問 http://www.harry1.com/images => 自然會解析到/www/harry1.com/這個目錄下的images
Alias=> 當(dāng)想再訪問http://www.harry1.com/test/images 也要解析到 之前的images目錄,此時需要別名
ErrorLog
CustomLog
<Location "/images">=> URL路徑,可以再訪問該路徑的時候,作限制
<Location>
ScriptAlias
<VirutalHost HOST>
</VirtualHost>
虛擬主機和中心主機是不能使用的,注釋中心主機的DocumentRoot即可
五、虛擬主機配置
1.基于IP
Host:
ip1:80
ip2:80
注釋httpd.conf的DocuemtRoot配置,即注釋中心主機配置 [root@hfdb0001conf]#pwd /etc/httpd/conf 在conf.d目錄下新建配置文件 [root@hfdb0001conf.d]#pwd /etc/httpd/conf.d [root@hfdb0001conf.d]#ll total12 -rw-r--r--1rootroot392Aug132013README -rw-------1rootroot227Oct3005:39virtual-ip.conf -rw-r--r--1rootroot299Aug22013welcome.conf [root@hfdb0001conf.d]#catvirtual-ip.conf=>前提是要有兩個ip <VirtualHost10.224.243.1:80> ServerNamewww.harry1.com DocumentRoot"/www/harry1.com" </VirtualHost> <VirtualHost10.224.243.2:80> ServerNamewww.harry2.com DocumentRoot"/www/harry2.com" </VirtualHost> 創(chuàng)建根目錄注意目錄權(quán)限755 [root@hfdb0001conf.d]#mkdir-p/www/{harry1.com,harry2.com} 創(chuàng)建index.html 分別訪問10.224.243.1:80和10.224.243.2:80=>會被解析到不同的目錄下
2.基于端口
Host:
ip:80
ip:8080
在conf.d目錄下新建配置文件 [root@hfdb0001conf.d]#pwd /etc/httpd/conf.d [root@hfdb0001conf.d]#ll total12 -rw-r--r--1rootroot392Aug132013README -rw-------1rootroot227Oct3005:39virtual-ip.conf-bak -rw-------1rootroot227Oct3005:39virtual-port.conf -rw-r--r--1rootroot299Aug22013welcome.conf [root@hfdb0001conf.d]#catvirtual-port.conf <VirtualHost10.224.243.1:80> ServerNamewww.harry1.com DocumentRoot"/www/harry1.com" </VirtualHost> <VirtualHost10.224.243.1:8080> ServerNamewww.harry2.com DocumentRoot"/www/harry2.com" </VirtualHost> 修改主配置,listen8080 分別訪問10.224.243.1:80和10.224.243.1:8080也會被解析到不同的目錄下
3.基于域名
serverName不同即可
在conf.d目錄下新建配置文件 [root@hfdb0001conf.d]#pwd /etc/httpd/conf.d [root@hfdb0001conf.d]#ll total12 -rw-r--r--1rootroot392Aug132013README -rw-------1rootroot227Oct3005:39virtual-ip.conf-bak -rw-------1rootroot227Oct3005:39virtual-port.conf-bak -rw-r--r--1rootroot299Aug22013welcome.conf [root@hfdb0001conf.d]#catvirtual-domain.conf===>domain需要被解析到該主機上,可以修改hosts可以DNS NameVirutalHost10.224.243.1:80 <VirtualHost10.224.243.1:80> ServerNamewww.harry1.com DocumentRoot"/www/harry1.com" </VirtualHost> <VirtualHost10.224.243.1:80> ServerNamewww.harry2.com DocumentRoot"/www/harry2.com" </VirtualHost> 分別訪問www.harry1.com和www.harry2.com也會被解析到不同的目錄下 注意:如果此時訪問的是10.224.243.1:80==>那么會被解析到第一個 每個虛擬主機可以定義自己的CustomLog,format,error等等
六、其他配置
1.目錄權(quán)限控制
針對某個IP不能訪問www.harry1.com [root@hfdb0001conf.d]#catvirtual-domain.conf===>domain需要被解析到該主機上,可以修改hosts可以DNS NameVirutalHost10.224.243.1:80 <VirtualHost10.224.243.1:80> ServerNamewww.harry1.com DocumentRoot"/www/harry1.com" <Directory"/var/www/harry1.com"> Optionsnone AllowOverridenone Orderdeny,allow=>注意指定了Order為denyallow,那么就只排除 Denyfrom{ip} </Directory> </VirtualHost> <VirtualHost10.224.243.1:80> ServerNamewww.harry2.com DocumentRoot"/www/harry2.com" </VirtualHost>
2. 身份驗證 轉(zhuǎn)http://www.cnblogs.com/loveCloud/archive/2012/01/12/2320636.html
一、編輯虛擬目錄配置文件,設(shè)置認證方式 <VirtualHost10.224.243.1:80> ServerNamewww.harry1.com DocumentRoot"/www/harry1.com" <Directory"/var/www/harry1.com"> Optionsnone AllowOverrideAuthConfig=>表明需要進行身份驗證(會再虛擬目錄下,查找.htaccess文件) Orderdeny,allow Denyfrom{ip} </Directory> </VirtualHost> 注意:也可以把以下第二步的內(nèi)容嵌入到Directory節(jié)點下。 二、創(chuàng)建.htaccess文件,并配置 vim/var/www/harry1.com/.htaccess AuthName"test"=>僅僅是描述,但最好設(shè)置成虛擬目錄的名字,(會在彈出層有體現(xiàn)) AuthTypeBasic=>驗證類型 AuthUserFile/var/www/harry1.com/.htpasswd=>密碼文件路徑 Requirevalid-user=>表示驗證成功的用戶都可以訪問 注意:Apache默認系統(tǒng)對.ht開頭的文件默認是不允許外部訪問的。安全性較高。 注意:Requirevalid-user表示只要htpasswd文件驗證都給的任何一個均可以登陸 也可以僅僅允許htpasswd文件內(nèi)的個別用戶Requireuserusername1username2 也可以僅僅允許htpasswd文件內(nèi)的個別用戶組Requiregroupgroup1group2 注意文件權(quán)限: -rw-r--r--.htaccess -rwxr--r--.htpasswd 三、創(chuàng)建.htpasswd文件,并配置 htpasswd-c/var/www/harry1.com/.htpasswd{username}第一次創(chuàng)建用戶用-c,第二次則不用,會提示你輸入密碼的。密碼是加密的 htpasswd-m/var/www/harry1.com/.htpasswd{username}修改密碼 四、通過用戶組訪問
3.Location配置 相對于Directory是配置本地文件系統(tǒng)路徑的,而Location是針對URL路徑的
<Location/server-status> SetHandlerserver-status=>該Handler能查看當(dāng)前系統(tǒng)的狀態(tài),如啟用了多少進程,即各個進程狀態(tài) OrderDeny,Allow Denyfromall Allowfrom{ip} </Location>
新聞名稱:Apache-httpd
新聞來源:http://www.rwnh.cn/article16/cgcjdg.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站制作、全網(wǎng)營銷推廣、網(wǎng)站策劃、ChatGPT、自適應(yīng)網(wǎng)站、響應(yīng)式網(wǎng)站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)