新聞中心
Apache是世界使用排名第一的Web服務(wù)器軟件。它可以運(yùn)行在幾乎所有廣泛使用的計算機(jī)平臺上,由于其跨平臺和安全性被廣泛使用,是最流行的Web服務(wù)器端軟件之一,其服務(wù)名為httpd。apache有很多設(shè)置和調(diào)優(yōu) 的注意事項(xiàng),本篇文章為大家分型一下httpd-2.2 配置及具體使用方法。

創(chuàng)新互聯(lián)服務(wù)項(xiàng)目包括宜秀網(wǎng)站建設(shè)、宜秀網(wǎng)站制作、宜秀網(wǎng)頁制作以及宜秀網(wǎng)絡(luò)營銷策劃等。多年來,我們專注于互聯(lián)網(wǎng)行業(yè),利用自身積累的技術(shù)優(yōu)勢、行業(yè)經(jīng)驗(yàn)、深度合作伙伴關(guān)系等,向廣大中小型企業(yè)、政府機(jī)構(gòu)等提供互聯(lián)網(wǎng)行業(yè)的解決方案,宜秀網(wǎng)站推廣取得了明顯的社會效益與經(jīng)濟(jì)效益。目前,我們服務(wù)的客戶以成都為中心已經(jīng)輻射到宜秀省份的部分城市,未來相信會繼續(xù)擴(kuò)大服務(wù)區(qū)域并繼續(xù)獲得客戶的支持與信任!
1、監(jiān)聽的套接字
Listen [IP:]port
此指令可以出現(xiàn)多次, 用于指定監(jiān)聽多個不同的套接字:
Listen 80
Listen 192.168.1.116:8080
2、配置文件中使用的 keep alive
目前多數(shù)的瀏覽器都請求服務(wù)器保持持續(xù)連接,這種功能就稱為“KeepAlive”,它是HTTP1.1中的標(biāo)準(zhǔn)規(guī)格,一般是用來強(qiáng)化服務(wù)器的性能。在使用保持連接功能時,設(shè)置客戶一次請求連接能影響文件的最大上限,建議把默認(rèn)值設(shè)為ON,以便提高訪問性能。但當(dāng)使用負(fù)載均衡時,會影響負(fù)載均衡的效果,在未斷開連接之前,同義客戶端始終被定向到同一臺服務(wù)器。
KeepAlive {On|Off}
KeepAliveTimeout 2 #超時時間
MaxKeepAliveRequests 50 #長連接最大請求數(shù)
3、MPM
#判定模塊是否存在 StartServers: 默認(rèn)啟動的工作進(jìn)程數(shù);
#不包括主進(jìn)程,主進(jìn)程只是負(fù)責(zé)子進(jìn)程的創(chuàng)建回收等 MinSpareServers: 最少空閑進(jìn)程數(shù); MaxSpareServers: 最大空閑進(jìn)程數(shù); ServerLimit: 最大活動進(jìn)程數(shù); MaxClients: 并發(fā)請求的最大數(shù);
#請求連接進(jìn)來不一定會活動,要小于等于serverlimit MaxRequestsPerChild: 每個子進(jìn)程在生命周期內(nèi)所能夠服務(wù)的最多請求個數(shù);
prefork.c>
StartServers:啟動的子進(jìn)程的個數(shù) MaxClients: 并發(fā)請求的最大數(shù); MinSpareThreads:最小空閑線程數(shù); MaxSpareThreads:最大空閑線程數(shù); ThreadsPerChild:每個子進(jìn)程可生成的線程數(shù); MaxRequestsPerChild:每個子進(jìn)程在生命周期內(nèi)所能夠服務(wù)的最多請求個數(shù),0表示不限定;
prefork.c>
4、DSO模塊加載方式
LoadModule module_name /path/to/module
如果使用相對路徑,則對于ServerRoot所定義的位置而言;例如:
LoadModule php5_module /usr/lib64/httpd/modules/php5.so
讓服務(wù)重載配置文件方能生效;
httpd -M: 列出已經(jīng)裝載的所有DSO及非DSO模塊
httpd -l: 列出支持使用的非DSO模塊
默認(rèn)使用prefork模塊,若想使用worker,則修改腳本配置文件:
[root@localhost conf]# vim /etc/sysconfig/httpd
#HTTPD=/usr/sbin/httpd.worker #啟用此項(xiàng),修改所使用的二進(jìn)制程序
5、配置站點(diǎn)根目錄
DocumentRoot /path/to/somewhere
Apache服務(wù)器存放網(wǎng)頁的路徑,默認(rèn)所有要求提供HTTP服務(wù)的連接,都以這個目錄為主目錄,默認(rèn)為 /var/www/html。
6、配置頁面訪問屬性
"/path/to/somewhere"> Options: Indexes: 缺少指定的默認(rèn)頁面時,允許將目錄中的所有文件以列表形式返回給用戶,危險; FollowSymLinks: 允許跟隨符號鏈接所指向的原始文件; None: 所有都不啟用; All: 所有都啟用; ExecCGI: 允許使用mod_cgi模塊執(zhí)行CGI腳本; Includes: 允許使用mod_include模塊實(shí)現(xiàn)服務(wù)器端包含(SSI); MultiViews:允許使用mod_negotiation實(shí)現(xiàn)內(nèi)容協(xié)商; SymLinksIfOwnerMatch:在鏈接文件屬主屬組與原始文件的屬主屬組相同時,允許跟隨符號鏈接所指向的原始文件;
可以配置網(wǎng)站目錄下的訪問屬性,使用
"path">可以基于正則表達(dá)式的匹配,但是一般不建議使用,會耗費(fèi)時間。類似的指令還有:
"">: 配置URL訪問屬性,與
相似(可以配置像內(nèi)生的status頁面或者定義了別名的路徑等);
""> : 限定單個文件的訪問屬性;
""> : 相當(dāng)于Location ~ ,但一般建議使用此配置進(jìn)行正則匹配;
如果某要配置其屬性的URL能映射到某具體文件系統(tǒng)路徑,建議使用。
7、基于主機(jī)的訪問控制
"/path/to/somewhere"> Options AllowOverride None
#AllowOverride表示以下基于ip的訪問控制是否被禁用,none表示不被禁用 Order Deny,Allow #后面的表示默認(rèn)規(guī)則 Allow Deny
基于IP控制:
Allow from Deny from IP, Network Address 172.16 172.16.0.0 172.16.0.0/16 172.16.0.0/255.255.0.0
二者都匹配或二者都無匹配項(xiàng)時,則以后者為準(zhǔn);否則,則以匹配到的為準(zhǔn);
8、定義默認(rèn)主頁面
DirectoryIndex index.php index.html home.html default.html #自左而右依次找
9、用戶主頁
如果期望讓每個用戶都可以創(chuàng)建個人站點(diǎn):http://Server_IP/~Username/
userdir disablied: 禁止 userdir public_html:public_html是用戶家目錄下的目錄名稱,所有位于此目錄中的文件均可通過前述的訪問路徑進(jìn)行訪問
配置用戶主頁示例:
[root@localhost conf]# vim httpd.conf #首先在配置文件中啟用以下選項(xiàng)366 #UserDir disabled367368 UserDir public_html[root@localhost httpd]# service httpd reload[root@localhost conf]# useradd feiyu[root@localhost conf]# su - feiyu[feiyu@localhost ~]$ mkdir public_html[feiyu@localhost ~]$ cd public_html/[feiyu@localhost public_html]$ echo "hello feiyu" > index.html
此時可以訪問了。但apache用戶沒有權(quán)限讀取文件,所以還得定義訪問權(quán)限
[feiyu@localhost ~]$ ls -ld /home/feiyu/drwx------. 6 feiyu feiyu 4096 Feb 15 20:42 /home/feiyu/[feiyu@localhost ~]$ setfacl -m u:apache:x /home/feiyu/[feiyu@localhost ~]$ getfacl /home/feiyu/getfacl: Removing leading '/' from absolute path names# file: home/feiyu/# owner: feiyu# group: feiyuuser::rwxuser:apache:--xgroup::---mask::--xother::---[feiyu@localhost ~]$ curl 192.168.1.117/~feiyu/hello feiyu
10、配置日志功能
默認(rèn)日志目錄:/var/log/httpd/
access.log: 訪問日志,其需要記錄的內(nèi)容需要自定義error.log: 錯誤日志
訪問日志:CustomLog “/path/to/access_log_file” Format_Name #CustomLog自定義訪問日志路徑LogFormat Format_String Format_Name
%h: 客戶端地址%l: 遠(yuǎn)程登錄名,通常為-%u: 認(rèn)證時的遠(yuǎn)程用戶名,沒有認(rèn)證時為-%t: 收到請求時的時間;%r: 請求報文的起始行;%>s: 響應(yīng)狀態(tài)碼;%b: 響應(yīng)報文的長度,單位為字節(jié)%{Header_Name}i: 記錄指定請求報文首部的內(nèi)容(value);
詳情請參考:http://httpd.apache.org/docs/2.2/mod/mod_log_config.html#formats
錯誤日志: ErrorLog
11、路徑別名
Alias /alias/ "/path/to/somewhere/"
意味著訪問http://Server_IP/alias/時,其頁面文件來自于/path/to/somewhere這個位置; 注意:前后路徑要一致,結(jié)尾都有”/”或者都沒有
12、設(shè)定默認(rèn)字符集
AddDefaultCharset UTF-8
定義cgi腳本路徑別名:
CGI: Common Gateway Interface協(xié)議(執(zhí)行某些文件時要以管理員的權(quán)限執(zhí)行,已經(jīng)很少被使用了)
13、CGI腳本路徑別名
CGI: Common Gateway Interface協(xié)議(執(zhí)行某些文件時要以管理員的權(quán)限執(zhí)行,已經(jīng)很少被使用了)
定義cgi腳本路徑別名:
ScriptAlias /URL/ "/path/to/somewhere/" #使用此種方法定義文件則被使用cgi協(xié)議執(zhí)行或者顯式使用execcgi
14、基于用戶的訪問控制
當(dāng)你的網(wǎng)站或者站點(diǎn)的某個路徑只想讓你授權(quán)的用戶訪問時,就可以使用基于用戶的訪問控制。
虛擬用戶:可以使用文件,SQL數(shù)據(jù)庫或者ldap等機(jī)制進(jìn)行認(rèn)證。認(rèn)證類型(auth):basic: 基本認(rèn)證,帳號和密碼明文發(fā)送;
digest:摘要認(rèn)證,hash編程之后發(fā)送,大多瀏覽器不支持;
認(rèn)證提供者(authentication provider):帳號和密碼的存放位置
授權(quán)機(jī)制(authorization):根據(jù)什么進(jìn)行授權(quán)
例:基于文件,做基本認(rèn)證,根據(jù)用戶和組進(jìn)行授權(quán)
使用htpasswd命令生成認(rèn)證庫
htpasswd:-c #第一次使用-c創(chuàng)建新文件,不是第一次不要使用此選項(xiàng)-m #用戶密碼使用MD5加密后存放-s #用戶密碼使用SHA加密后存放-p #用戶密碼不加密-d #禁用一個賬戶-e #啟用一個賬戶[root@localhost fin]# htpasswd -c -m /etc/httpd/conf/.htpasswd feiyu #第一次需要使用-c選項(xiàng)創(chuàng)建文件New password:Re-type new password:Adding password for user feiyu[root@localhost fin]# htpasswd -m /etc/httpd/conf/.htpasswd feiyu1New password:Re-type new password:Adding password for user feiyu1
配置認(rèn)證機(jī)制
"/www/htdocs/fin"> Options None AllowOverride AuthConfig AuthType Basic AuthName
"Private Area"
# AuthBasicProvider file #可以不用指,默認(rèn)為文件 AuthUserFile /etc/httpd/conf/.htpasswd #所使用的認(rèn)證文件 Require valid-user #允許文件中的所有合法賬號
訪問界面如下所示:
httpd-2.2 配置及用法完全攻略httpd-2.2 配置及用法完全攻略
基于組進(jìn)行認(rèn)證
先創(chuàng)建用戶再創(chuàng)建組文件:
組文件格式: 組名: 用戶1 用戶2 用戶3
"/www/htdocs/fin"> Options None AllowOverride AuthConfig AuthType Basic AuthName
"Private Area"
# AuthBasicProvider file AuthUserFile /etc/httpd/conf/.htpasswd AuthGroupFile /etc/httpd/conf/.htgroup #所使用的組文件 Require group GroupName
">
15、虛擬主機(jī)
虛擬主機(jī)意即一個物理服務(wù)器提供多個站點(diǎn),以前剛建站時使用的是阿里云的免費(fèi)虛擬主機(jī),我想應(yīng)該就是基于此方法配置的。虛擬主機(jī)的實(shí)現(xiàn)方法有三種:
基于不同的IP實(shí)現(xiàn)不同的虛擬主機(jī):變化IP
基于不同的port實(shí)現(xiàn)不同的虛擬主機(jī):變化port
基于不同的FQDN實(shí)現(xiàn)不同的虛擬主機(jī):變化ServerName的參數(shù)
配置使用虛擬主機(jī):
(1)注釋中心主機(jī),并啟用相關(guān)配置
[root@localhost http]# vim /etc/httpd/conf/httpd.confDocumentRoot "/var/www/html" #注釋中心主機(jī)NameVirtualHost *:80 #使用基于域名的虛擬主機(jī)時需要啟動此項(xiàng),并且下面的配置與其保持一致,在 httpd-2.4 中不需要使用
(2)基于ip的虛擬主機(jī):
ServerName www.feiyu1.com DocumentRoot
"/var/www/html/feiyu1"
ServerName www.feiyu2.com DocumentRoot
"/var/www/html/feiyu2"
(3)基于端口的虛擬主機(jī):
ServerName www.feiyu1.com DocumentRoot
"/var/www/html/feiyu1"
ServerName www.feiyu2.com DocumentRoot “/var/www/html/feiyu2” (4)基于域名的虛擬主機(jī):
NameVirtualHost *:80
ServerName www.feiyu1.com DocumentRoot
"/var/www/html/feiyu1" CustomLog
"/var/log/httpd/feiyu1-access_log" combined
ServerName www.feiyu2.com DocumentRoot
"/var/www/html/feiyu2" CustomLog
"/var/log/httpd/feiyu2-access_log" combined
16、啟用 https 協(xié)議
https是在http的基礎(chǔ)上進(jìn)行ssl/tls加密實(shí)現(xiàn)的結(jié)果,啟用https固然更安全,不會存在流量劫持等風(fēng)險,但使用https就不再是三次握手了,它會增加建立連接的時間。
http與https首次請求對比圖:
httpd-2.2 配置及用法完全攻略httpd-2.2 配置及用法完全攻略
httpd-2.2 配置及用法完全攻略httpd-2.2 配置及用法完全攻略
http: 文本協(xié)議,80/tcphttps: 二進(jìn)制格式的協(xié)議, 443/tcpSSL握手要完成的工作:
交換協(xié)議版本號
選擇雙方都支持的加密方式
對兩端實(shí)現(xiàn)身份驗(yàn)正
密鑰交換
SSL會話基于IP地址進(jìn)行,不支持在基于FQDN的虛擬主機(jī)上實(shí)現(xiàn),所以在只有一個公網(wǎng)IP的服務(wù)器上使用虛擬主機(jī)時,只能為一個站點(diǎn)使用https。
配置支持https:
(1)安裝httpd支持ssl模塊
[root@localhost ~]# yum install mod_ssl -y
(2)自建CA
[root@localhost ~]# cd /etc/pki/CA[root@localhost ~]# (umask 077; openssl genrsa -out private/cakey.pem 2048)[root@localhost ~]# openssl req -new -x509 -key private/cakey.pem -out cacert.pem -days 365
(3)生成私鑰
[root@localhost ~]# cd /etc/httpd/conf/[root@localhost ~]# mkdir ssl[root@localhost ~]# cd ssl[root@localhost ~]# (umask 077; openssl genrsa -out httpd.key 1024)
(4)生成證書申請
[root@localhost ~]# openssl req -new -key httpd.key -out httpd.csr
(5)CA簽署證書
[root@localhost ~]# openssl ca -in httpd.csr -out httpd.crt -days 365
(6)修改httpd的ssl配置文件
[root@localhost ~]# vim /etc/httpd/conf.d/ssl.confDocumentRoot "/var/www/html/feiyu1"ServerName www.feiyu.comSSLCertificateFile /etc/httpd/conf/ssl/httpd.crtSSLCertificateKeyFile /etc/httpd/conf/ssl/httpd.key
(7)驗(yàn)證導(dǎo)入瀏覽器
驗(yàn)證,可以使用以下命令進(jìn)行驗(yàn)證或者將證書導(dǎo)入到瀏覽器并進(jìn)行訪問:
# openssl s_client -connect IP:port -CAfile /path/to/CA_certificate_file
17、服務(wù)器status頁面
status頁面是httpd內(nèi)生的,且此信息可以通過web予以顯示,此信息是關(guān)于服務(wù)器的運(yùn)行狀態(tài)的所以不能對所有人都顯示。
[root@localhost html]# vim /etc/httpd/conf/httpd.conf SetHandler server-statusAuthType BasicAuthName "Server Status"AuthUserFile "/etc/httpd/conf/.htpasswd"Require valid-userOrder deny,allowAllow from all
SetHandler: 顯式的定義使用的處理器 ,是當(dāng)文件被調(diào)用時,Apache內(nèi)部表示形式;一般每種文件類型都有其隱式處理器;
18、使用mod_deflate模塊壓縮頁面優(yōu)化傳輸速度
一般當(dāng)CPU多空閑,帶寬壓力大時才會啟用壓縮,啟用壓縮不但能優(yōu)化傳輸速度也能節(jié)約帶寬,但是其一個弊端就是會使緩存的命中率下降。
[root@localhost html]# vim /etc/httpd/conf/httpd.confSetOutputFilter DEFLATE #啟用deflate[root@localhost conf.d]# vim deflate.conf # Restrict compression to these MIME types 定義要壓縮的文件類型 AddOutputFilterByType DEFLATE text/plain AddOutputFilterByType DEFLATE text/html AddOutputFilterByType DEFLATE application/xhtml+xml AddOutputFilterByType DEFLATE text/xml AddOutputFilterByType DEFLATE application/xml AddOutputFilterByType DEFLATE application/x-javascript AddOutputFilterByType DEFLATE text/javascript AddOutputFilterByType DEFLATE text/css # Level of compression (Highest 9 - Lowest 1) DeflateCompressionLevel 9 #壓縮比,默認(rèn)為6 # Netscape 4.x has some problems. BrowserMatch ^Mozilla/4 gzip-only-text/html # Netscape 4.06-4.08 have some more problems BrowserMatch ^Mozilla/4\.0[678] no-gzip # MSIE masquerades as Netscape, but it is fine BrowserMatch \bMSI[E] !no-gzip !gzip-only-text/html
19、資源限定
軟限制:可以超出的限制,但僅超出一定時長;
硬限制:絕對不能超出的限制
使用 ulimit 可以修改軟限制:
-n [N]: 顯示或限定能打開的最大的文件句柄數(shù);
-u [N]: 所能夠運(yùn)行的最多進(jìn)程數(shù);
其相對應(yīng)的配置文件為:/etc/security/limits.conf,擴(kuò)展配置:/etc/security/limits.d/*.conf
root@tianfeiyu # vim /etc/security/limits.conf #設(shè)定硬限制apache hard nofile 65535 #設(shè)定能打開的最大文件數(shù)apache hard nproc 30000#設(shè)定能打開的最大進(jìn)程數(shù)
20、httpd程序包自帶的工具介紹
httpd:Apache 服務(wù)器。
apachectl:Apache HTTP 服務(wù)器控制工具。
ab:Apache HTTP 服務(wù)器性能基準(zhǔn)工具。
apxs:Apache 擴(kuò)展工具。
configure:配置源代碼。
dbmmanage:為基本認(rèn)證創(chuàng)建和更新 DBM 格式的用戶認(rèn)證文件。
htcacheclean:清理磁盤緩存。
htdigest:為摘要認(rèn)證創(chuàng)建和更新用戶認(rèn)證文件。
htdbm:操作 DBM 密碼數(shù)據(jù)庫。
htpasswd:為基本認(rèn)證創(chuàng)建和更新用戶認(rèn)證文件。
httxt2dbm:為 RewriteMap 創(chuàng)建 dbm 文件。
logresolve:將 Apache 日志文件中的 IP 地址解析到主機(jī)名稱。
rotatelogs:不關(guān)閉 Apache 而切換日志文件。
suexec:執(zhí)行外部程序前切換用戶。
運(yùn)行目錄:/etc/httpd
配置文件:
主配置:/etc/httpd/conf/httpd.conf
擴(kuò)展配置:/etc/httpd/conf.d/*.conf
Socket: 80/tcp, 443/tcp
文檔根目錄:/var/www/html
CGI目錄:/var/www/cgi-bin/
MPM(Multipath Processing Module):多道處理模塊,非一個模塊,而是對一種特性的稱謂
多進(jìn)程模型 prefork: 一個進(jìn)程響應(yīng)一個請求(主進(jìn)程創(chuàng)建進(jìn)程響應(yīng))
多線程模型 worker: 一個主進(jìn)程多個子進(jìn)程,一個進(jìn)程生成多個線程,一個線程響應(yīng)一個請求,一個進(jìn)程生成的線程數(shù)有限
事件模型 event: 一個線程響應(yīng)多個請求,基于事件驅(qū)動機(jī)制來維持多個用戶請求;
event-driven: 事件驅(qū)動,主要目的在于實(shí)現(xiàn)單線程響應(yīng)多個請求;
httpd配置目錄信息:服務(wù)腳本:/etc/rc.d/init.d/httpd腳本配置文件:/etc/sysconfig/httpd
高度模塊化:DSO(Dynamic Shared Object)動態(tài)化裝飾模塊
MPM(Multipath Processing Module):多道處理模塊,非一個模塊,而是對一種特性的稱謂
網(wǎng)站欄目:詳解httpd-2.2配置及具體使用方法
網(wǎng)頁URL:http://www.dlmjj.cn/article/djcchji.html


咨詢
建站咨詢
