httpd2.2的配置文件常见设置
目錄
- 1、啟動(dòng)報(bào)錯(cuò):提示沒有名字fqdn
- 2、顯示服務(wù)器版本信息
- 3、修改監(jiān)聽的IP和Port
- 3、持久連接
- 4 、MPM( Multi-Processing Module )多路處理模塊
- 5 、DSO:Dynamic Shared Object
- 6 、定義'Main' server (主站點(diǎn)) 的文檔頁(yè)面路徑
- 7、定義站點(diǎn)主頁(yè)面
- 8 、站點(diǎn)訪問(wèn)控制常見機(jī)制
- 9 、?中"基于源地址"實(shí)現(xiàn)訪問(wèn)控制
- 10 、日志設(shè)定
?
?
?摘要:一個(gè)服務(wù)的配置文件非常重要,弄懂配置文件是熟練掌握服務(wù)的必要前提。
一、httpd-2.2常見文件介紹
(1)配置文件:
主配置文件盡量別改,改自己的子配置文件
/etc/httpd/conf/httpd.conf?主配置文件
/etc/httpd/conf.d/*.conf?自配置文件
檢查配置語(yǔ)法:
httpd -t 通用
service httpd configtest centos7不支持
服務(wù)腳本:/etc/rc.d/init.d/httpd
腳本配置文件:/etc/sysconfig/httpd
服務(wù)控制和啟動(dòng):
chkconfig httpd on|off
service?{start|stop|restart|status|configtest|reload}?httpd
站點(diǎn)網(wǎng)頁(yè)文檔根目錄:
/var/www/html
模塊文件路徑 :
/etc/httpd/modules 軟連接
/usr/lib64/httpd/modules
主程序文件:
/usr/sbin/httpd
/usr/sbin/httpd.worker
/usr/sbin/httpd.event
主進(jìn)程文件 :服務(wù)起來(lái)后會(huì)自動(dòng)生成,可以查進(jìn)程pid,最后不要手動(dòng)加
/etc/httpd/run/httpd.pid
日志文件目錄:
/var/log/httpd
access_log: 訪問(wèn)日志
error_log :錯(cuò)誤日志
幫助文檔包:httpd-manual?,按完包后,重啟服務(wù),就能看幫助文檔,沒網(wǎng)也可以看
?
(2)httpd 配置文件的組成:修改前先備份,養(yǎng)成好習(xí)慣
# grep "Section" /etc/httpd/conf/httpd.conf ?人為的分成3大段,方便管理,可以隨便放
### Section 1: Global Environment 全局環(huán)境配置
### Section 2: 'Main' server configuration 主服務(wù)器
### Section 3: Virtual Hosts 虛擬主機(jī),全是注釋,默認(rèn)沒有
?
配置格式:directive(指令) value(值)
directive: 不區(qū)分字符大小寫
value: 為路徑時(shí),是否區(qū)分大小寫,取決于文件系統(tǒng)
?
二、Httpd 2.2 常見配置:可以在官網(wǎng)或安裝幫助包查看幫助
vim /etc/httpd/conf/httpd.conf 總配置文件
1、啟動(dòng)報(bào)錯(cuò):提示沒有名字fqdn
在總配置文件搜索 /ServerName,把注釋去掉,隨便寫,最好寫自己的網(wǎng)站名;啟動(dòng)就不報(bào)錯(cuò)了
修改后:
?
2、顯示服務(wù)器版本信息
ServerTokens:管理響應(yīng)首部信息的,顯示服務(wù)器版本信息
搜索/ServerTokens,文件默認(rèn)是OS,可以注釋掉、刪掉,有默認(rèn)值full
ServerTokens Major|Minor|Min[imal]|Prod[uctOnly]|OS|Full
配置文件在的設(shè)置 首部顯示的信息
① ServerTokens Prod[uctOnly]:Server: Apache
② ServerTokens Major: Server:Apache/2
③ ServerTokens Minor: Server:Apache/2.0
④ ServerTokens Min[imal]: Server:Apache/2.0.41
⑤ ServerTokens OS: Server:Apache/2.0.41 (Unix)
⑥ ServerTokens Full (or not specified):Server: Apache/2.0.41 (Unix) PHP/4.2.2 MyMod/1.2
This setting applies to the entire server and cannot be enabled or disabled on a virtualhost-by-virtualhost basis. After version 2.0.44, this directive also controls the information presented by the ServerSignature directive.
建議使用:ServerTokens Prod 安全,顯示越詳細(xì)越不安全
可以查看幫助信息,要安裝httpd-manual包,幫助信息很詳細(xì)
實(shí)例:cur -I 192.168.37.106 查詢頭部信息
另:可以在調(diào)度器上設(shè)置:直接隱藏版本信息或隨意修改
?
3、修改監(jiān)聽的IP和Port
搜索/Listen,默認(rèn)80
Listen [IP:]PORT,不要隨意更改,可以用于只想讓特定的ip訪問(wèn),不讓其他人訪問(wèn)
(1) 省略IP 表示為0.0.0.0; 端口綁定所有ip
(2) Listen 指令至少一個(gè),可重復(fù)出現(xiàn)多次,寫多個(gè),不能為空或注釋掉,注釋掉服務(wù)起不來(lái)
Listen 80
Listen 8080 寫多個(gè)就可開啟多個(gè)端口,但是訪問(wèn)的還是同一個(gè)網(wǎng)站
注意:改了端口,要在訪問(wèn)時(shí)加上自己改的端口
(3) 修改監(jiān)聽socket,重啟服務(wù)進(jìn)程方可生效
?
3、持久連接
Persistent Connection :連接持久建立,每個(gè)資源獲取完成后不會(huì)斷開連接,而是繼續(xù)等待其它的請(qǐng)求完成,默認(rèn)關(guān)閉持久連接 KeepAlive Off
斷開條件:數(shù)量限制:100
時(shí)間限制:以秒為單位, httpd-2.4 支持毫秒級(jí)
副作用:對(duì)并發(fā)訪問(wèn)量較大的服務(wù)器,持久連接功能會(huì)使用有些請(qǐng)求得不到響應(yīng)
折中:使用較短的持久連接時(shí)間
設(shè)置: KeepAlive On|Off
KeepAliveTimeout 15
MaxKeepAliveRequests 100
測(cè)試:telnet?WEB_SERVER_IP?PORT
GET /URL HTTP/1.1 ? ?模仿報(bào)文首部
Host: WEB_SERVER_IP
?
4 、MPM( Multi-Processing Module )多路處理模塊
(1)MPM 工作模式介紹:prefork、worker、 event(試驗(yàn)階段)
①?prefork?:多進(jìn)程I/O 模型,每個(gè)進(jìn)程響應(yīng)一個(gè)請(qǐng)求,默認(rèn)模型
一個(gè)主進(jìn)程 :生成和回收n個(gè)子進(jìn)程 , 創(chuàng)建套接字,不響應(yīng)請(qǐng)求
多個(gè)子進(jìn)程:工作work 進(jìn)程,每個(gè)子進(jìn)程處理一個(gè)請(qǐng)求;系統(tǒng)初始時(shí),預(yù)先生成多個(gè)空閑進(jìn)程,等待請(qǐng)求,最大不超過(guò)1024個(gè)
②?worker?:復(fù)用的多進(jìn)程I/O 模型, 多進(jìn)程多線程,IIS 使用此模型
一個(gè)主進(jìn)程: 生成m 個(gè)子進(jìn)程,每個(gè)子進(jìn)程負(fù)責(zé)生成n個(gè)線程,每個(gè)線程響應(yīng)一個(gè)請(qǐng)求 ,并發(fā)響應(yīng)請(qǐng)求:m*n
③?event?:事件驅(qū)動(dòng)模型(worker 模型的變種)
一個(gè)主進(jìn)程:生成m個(gè)子進(jìn)程,每個(gè)進(jìn)程直接響應(yīng)n個(gè)請(qǐng)求,并發(fā)響應(yīng)請(qǐng)求:m*n ,有專門的線程來(lái)管理這些keep-alive?類型的監(jiān)控線程,當(dāng)有真實(shí)請(qǐng)求時(shí), 將請(qǐng)求傳遞給服務(wù)線程,執(zhí)行完畢后,又允許釋放 。這樣增強(qiáng)了高并發(fā)場(chǎng)景下的請(qǐng)求處理力 能力
httpd-2.2: event 測(cè)試版 ,centos6 默認(rèn)
httpd-2.4 :event 穩(wěn)定版,centos7 默認(rèn)
? 圖示:
① prefork MPM
② worker MPM
③ event MPM
注意:httpd-2.2 不支持同時(shí)編譯多個(gè)模塊,所以只能編譯時(shí)選定一個(gè);rpm 安裝的包提供三個(gè)二進(jìn)制程序文件,分別用于實(shí)現(xiàn)對(duì)不同MPM 機(jī)制的支持
(2)確認(rèn)方法:
ps aux | grep httpd
默認(rèn)為/usr/sbin/httpd, 即prefork 模式
查看模塊列表:
查看靜態(tài)編譯的模塊
httpd?-l
查看靜態(tài)編譯及動(dòng)態(tài)裝載的模塊
httpd?-M
動(dòng)態(tài)模塊加載:不需重啟即生效
動(dòng)態(tài)模塊路徑:/usr/lib64/httpd/modules
?
(3)更換使用的httpd 程序模塊:
/etc/sysconfig/httpd?在這個(gè)文件中改
① HTTPD=/usr/sbin/httpd.worker ?默認(rèn)是被注釋的,去掉注釋就切換到worker程序了
重啟服務(wù)生效
pstree -p|grep httpd 查看進(jìn)程和線程
httpd.worker?-l 模塊換了,命令也換了
②?Httpd 2.4 與之不同
以動(dòng)態(tài)模塊方式提供
配置文件:/etc/httpd/conf.modules.d/00-mpm.conf
httpd -M |grep mpm
重啟服務(wù) 生效
pstree -p|grep httpd 查看進(jìn)程和線程
?
(4)prefork 的默認(rèn)配置:主配置文件中,搜索/prefork
<IfModule prefork.c> 根據(jù)工作環(huán)境設(shè)置
StartServers 8 一開啟服務(wù)就準(zhǔn)備8個(gè)進(jìn)程
MinSpareServers 5 最小的空閑進(jìn)程,先預(yù)留,不夠就生成
MaxSpareServers 20 最大空閑進(jìn)程
ServerLimit 256 最多進(jìn)程數(shù), 最大256
MaxClients 256 最大并發(fā)數(shù)
MaxRequestsPerChild 4000 子進(jìn)程最多能處理的請(qǐng)求數(shù)量。在處理MaxRequestsPerChild 個(gè)請(qǐng)求之后, 子進(jìn)程將會(huì)被父進(jìn)程終止,這時(shí)候子進(jìn)程占用的內(nèi)存就會(huì)釋放( 為0時(shí)永遠(yuǎn)不釋放)
</IfModule>
?
(5) worker 的默認(rèn)配置:主配置文件中,搜索/worker
<IfModule worker.c>
StartServers 4 一開啟服務(wù)就準(zhǔn)備4個(gè)進(jìn)程,4x25=100線程
MaxClients 300 最多300個(gè)線程
MinSpareThreads 25 最小空閑25線程
MaxSpareThreads 75 最大空閑75線程,和上邊沖突,開服務(wù)先開啟4個(gè)進(jìn)程,再殺死1個(gè)進(jìn)程
ThreadsPerChild 25 每個(gè)子進(jìn)程最大25個(gè)線程
MaxRequestsPerChild 0 無(wú)限制
</IfModule>
(6) 測(cè)試性能:ab命令 yum -y install httpd-tools
ab -c 100 -n 1000?http://192.168.30.106/
- c:并發(fā)連接數(shù)
-n:總的連接數(shù)
結(jié)果:發(fā)現(xiàn)prefork和worker性能沒有什么較大的差異
?
5 、DSO:Dynamic Shared Object
①?加載動(dòng)態(tài)模塊配置:/etc/httpd/conf/httpd.conf 主配置文件
配置指定實(shí)現(xiàn)模塊加載格式:搜索/LoadModule
② 格式:
LoadModule <mod_name> <mod_path>
模塊文件路徑可使用相對(duì)路徑:相對(duì)于ServerRoot 服務(wù)的根(設(shè)置的為/etc/httpd)
③?httpd -M 可以查詢模塊信息,若刪除或注釋掉一個(gè)模塊,那個(gè)模塊的功能就會(huì)禁用,且httpd -M 查詢不到
因此,當(dāng)我們需要用PHP時(shí),可以寫入PHP的模塊,就能使用了
示例:
LoadModule auth_basic_module
modules/mod_auth_basic.so
?
6 、定義'Main' server (主站點(diǎn)) 的文檔頁(yè)面路徑
搜索/DocumentRoot
格式:DocumentRoot?"/path"
作用:文檔路徑映射:
DocumentRoot 指向的路徑為URL 路徑的起始位置
注意:
① 可以寫多行,但是下邊的會(huì)覆蓋上邊的,最后還是使用下邊的,寫到子配置文件一樣,因?yàn)樽优渲梦募蘒nclude conf.d/*.conf在這行設(shè)置的上邊,會(huì)被這行設(shè)置覆蓋。
② 若設(shè)置的主站點(diǎn)不存在,那么服務(wù)會(huì)啟動(dòng)失敗!
示例:
DocumentRoot "/app/site1"
http:/192.168.30.106/--> /app/site1/index.html
注意:SELinux 和iptables 的狀態(tài),要關(guān)掉
?
7、定義站點(diǎn)主頁(yè)面
搜索:/DirectoryIndex
格式:DirectoryIndex?index.html index.html.var
分析:
① 查詢http://192.168.30.106/ 及其子目錄時(shí),不指定文件,可以默認(rèn)打開目錄下的index.html文件
②?若沒有設(shè)置中的兩個(gè)文件,看其他設(shè)置:下設(shè)置9,默認(rèn)是報(bào)錯(cuò);
有特定設(shè)置會(huì)顯示特定設(shè)置,如首頁(yè);子配置文件 /etc/httpd/conf.d/welcome.conf?有設(shè)置,若只有 / 或多個(gè),目錄下沒有index.html,就顯示報(bào)錯(cuò)頁(yè)面,welcome.conf這個(gè)設(shè)置優(yōu)先級(jí)高,安全
報(bào)錯(cuò)頁(yè)面
?
8 、站點(diǎn)訪問(wèn)控制常見機(jī)制
可基于兩種機(jī)制指明對(duì)哪些資源進(jìn)行何種訪問(wèn)控制訪問(wèn)控制機(jī)制有兩種:客戶端來(lái)源地址,用戶賬號(hào)
①?文件系統(tǒng)路徑:格式
<Directory?"/path">
...
</Directory>
<Files?"/path/file">
...
</Files>
<FilesMatch?"PATTERN">
...
</FilesMatch>
例:主配置文件中,不能訪問(wèn) .ht 開頭的文件的設(shè)置
?
②?URL 路徑:支持正則,通配符
<Location?"">
...
</Location>
<LocationMatch?"">
...
</LocationMatch>
例:子配置文件,/etc/httpd/conf.d/welcome.conf 的設(shè)置
注意:支持正則,通配符
示例:
<FilesMatch "\.(gif|jpe?g|png)$"> 正則
<Files?"?at.*">?通配符
<Location?/status> 絕對(duì)路徑的目錄
<LocationMatch "/(extra|special)/data">
?
9 、<Directory> 中"基于源地址"實(shí)現(xiàn)訪問(wèn)控制
(1)?Options?:后跟1 個(gè)或多個(gè)以空白字符分隔的選項(xiàng)列表,可在總配置文件中修改,也可從創(chuàng)建一個(gè)自配置文件中修改設(shè)置
在選項(xiàng)前的+ ,- 表示增加或刪除指定選項(xiàng)
常見選項(xiàng):
Indexes?:指明的URL 路徑下不存在與定義的主頁(yè)面資源相符的資源文件時(shí),返回索引列表給用戶,默認(rèn)是不允許,加上不安全;有需要的時(shí)候,例如做yum源的時(shí)候
FollowSymLinks?:允許訪問(wèn)符號(hào)所指向的源文件,例:鏈接文件,默認(rèn)允許
None :全部禁用
All:全部允許
注意:若沖突,后邊的設(shè)置會(huì)覆蓋前邊的
子目錄也可以設(shè)置的和父目錄不一樣,放在下邊
例:vim /etc/httpd/conf.d/test.conf 子配置文件
?
(2) AllowOverride,和上邊實(shí)現(xiàn)的效果一樣,就是把設(shè)置放在目錄的隱藏文件下.htaccess
與訪問(wèn)控制相關(guān)的哪些指令可以放在指定目錄下的.htaccess(由AccessFileName 指定)文件中,覆蓋之前的,.htaccess是主配置文件中設(shè)置指定的
用法:vim /etc/httpd/conf.d/test.conf
只對(duì)<directory> 語(yǔ)句有效
AllowOverride All: 所有指令都有效
AllowOverride None :.htaccess 文件無(wú)效
AllowOverride AuthConfig Indexes 除了AuthConfig和Indexes的其它指令都無(wú)法覆蓋
然后在.htaccess文件中設(shè)置,.htaccess放在所需要控制的目錄下,例bbs目錄
vim /app/site1/.htaccess
options +indexes -followsymlinks
?
(3) order 和allow 、deny,在2.4中已無(wú)效,有另外的權(quán)限控制
order :定義生效次序;寫在后面的表示默認(rèn)法則,覆蓋,優(yōu)先級(jí)高
Order allow,deny
Order deny,allow
Allow from, Deny from
來(lái)源地址的表達(dá)方法:IP、網(wǎng)絡(luò):
172.16
172.16.0.0
172.16.0.0/16
172.16.0.0/255.255.0.0
分析:① 若不沖突,allow,deny都產(chǎn)生效果,例
② 若沖突,看誰(shuí)在后,在后的優(yōu)先級(jí)高,但是只限于沖突的,
例:除107,這個(gè)網(wǎng)段的其他ip可以訪問(wèn),但這個(gè)網(wǎng)段以外,都拒絕
③ 沒在deny、allow中設(shè)置的,看allow/deny誰(shuí)在后邊,誰(shuí)優(yōu)先級(jí)高
?
10 、日志設(shè)定
日志類型:
訪問(wèn)日志
錯(cuò)誤日志
錯(cuò)誤日志:
ErrorLog logs/error_log
LogLevel warn
loglevel 可選值:
debug, info, notice, warn,error
crit, alert, emerg
?
訪問(wèn)日志:搜索:/LogForma
定義訪問(wèn)日志格式:LogFormat format strings,
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
下邊有選擇哪一個(gè)日志
使用日志格式:
CustomLog logs/access_log combined
參考幫助:
http://httpd.apache.org/docs/2.2/mod/mod_log_config.html#formats
各項(xiàng)設(shè)置的意思:可以隨便改自己想要的
??%h?客戶端IP 地址
??%l?遠(yuǎn)程用戶, 啟用mod_ident 才有效,通常為減號(hào)"-" "
??%u?驗(yàn)證(basic ,digest )遠(yuǎn)程用戶, 非登錄訪問(wèn)時(shí),為一個(gè)減號(hào)"-"
??%t?服務(wù)器收到請(qǐng)求時(shí)的時(shí)間
??%r?First line of request ,即表示請(qǐng)求報(bào)文的首行;記錄了此次請(qǐng)求的"方法","URL" 以及協(xié)議版本
??%>s?最后的響應(yīng)狀態(tài)碼
??%b?響應(yīng)報(bào)文的大小,純數(shù)據(jù)大小,單位是字節(jié);不包括響應(yīng)報(bào)文http 首部
??%{Referer}i?請(qǐng)求報(bào)文中首部"referer" 的值;即從哪個(gè)頁(yè)面中的超鏈接跳轉(zhuǎn)至當(dāng)前頁(yè)面的
防止倒鏈,i就是首部的意思
??%{User-Agent}i?請(qǐng)求報(bào)文中首部"User-Agent" 的值;即發(fā)出請(qǐng)求的應(yīng)用程序
幫助文檔里都有
查詢?nèi)罩?#xff1a;tail /var/log/httpd/access_log
?
11 、設(shè)定默認(rèn)字符集
AddDefaultCharset UTF-8(全球) 默認(rèn)
中文字符集:GBK, GB2312(中文簡(jiǎn)體), GB18030
?
12 、定義路徑別名
格式:?Alias?/URL/ "/PATH/"?/URL/有沒有都無(wú)所謂,虛擬的目錄
Alias /download/ "/rpms/pub/"
例:http://www.magedu.com/download/bash.rpm?==> /rpms/pub/bash.rpm
http://www.magedu.com/images/logo.png?==> /www/htdocs/images/logo.png
?
13 、status 頁(yè)面
這個(gè)功能需要status_module 模塊
httpd -M | grep status 查詢這個(gè)模塊有沒有被加載
在總配置文件中搜索/server-status
LoadModule status_module modules/mod_status.so 這個(gè)模塊在總配置文件有加載
<Location /server-status> 本來(lái)是注釋掉的
SetHandler server-status2 這個(gè)名字隨便寫,只要訪問(wèn)時(shí)用這個(gè)名字就行
Order allow,deny
Allow from 192.168.30.0/24
</Location>
ExtendedStatus On 顯示擴(kuò)展信息,默認(rèn)也是注釋的
顯示狀態(tài)頁(yè)面
狀態(tài)的類型:
"-"等待連接 "S"啟動(dòng) "R"處于讀取狀態(tài)
"W"發(fā)送應(yīng)答 "K"保持長(zhǎng)連接 "D"dns查詢
"C"正處于關(guān)閉狀態(tài) "L"記錄日志 "G"優(yōu)雅的終止,溫柔的斷開
"r"把空閑的worker進(jìn)程清理 "."沒有正常的進(jìn)程
?
轉(zhuǎn)載自:http://www.cnblogs.com/along21/p/7691642.html
版權(quán)聲明:本文版權(quán)歸作者和博客園共有,歡迎轉(zhuǎn)載,但未經(jīng)作者同意必須保留此段聲明,且在文章頁(yè)面明顯位置給出原文連接,否則保留追究法律責(zé)任的權(quán)利。
不積跬步無(wú)以至千里
轉(zhuǎn)載于:https://www.cnblogs.com/dannylinux/articles/7999156.html
總結(jié)
以上是生活随笔為你收集整理的httpd2.2的配置文件常见设置的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: SpringBoot自动化配置的注解开关
- 下一篇: 2017-12-07 socket 读