下面介紹的是http協定基礎、http協定的封包格式、httpd(Apache)、httpd-2.2、httpd-2.4。
一、http協定基礎 -------------超文本傳輸協定,無狀态,可通過 cookie 機制來進行狀态儲存。
1、協定版本
http協定的版本有:http/0.9、http/1.0、http/1.1。
http/1.0 ---------支援MIME機制,支援Cache機制,Method機制。
http/1.1 --------強化了緩存、提出了持久連接配接機制
http/1.0 的三種機制解釋如下:
MIME機制 ------------多用途網際網路郵件擴充
Cache機制 -----------緩存機制
Method機制:
GET --------請求擷取相關資源
POST -------在資源之後附加的資料
HEAD -------請求資源的相應首部
PUT --------請求伺服器存儲一個資源
DELETE -----請求伺服器删除某個資源
TRACE ------請求伺服器回送請求資訊,用于故障診斷或檢測
CONNECT ----保留未被使用
OPTIONS ----查詢伺服器性能,查詢與資源相關的選項和請求資源的需求
http協定 ------應用層協定,接口 80/tcp
https協定 -----應用層協定,接口 443/tcp
2、URI -----------統一資源辨別符(web上的各種資源都可以用uri來辨別)
URI分為三部分:
1)、通路資源的命名機制
2)、存放資源的主機名稱
3)、資源自身的名稱
URL ------------統一資源【定位】符,可以說URL是URI的子集(URI自身存在的機制)。
URL是網際網路上,【描述web資源】的特定格式的一組字元串。
URL由三部分構成:
1)、協定 ------表資源的提供方式或通路方式
2)、主機辨別 --------可以是主機名稱,也可以是IP位址
3)、資源路徑 --------使用某種特定方式實作的路徑映射機制,辨別資源的具體位置
URL的通用格式:scheme://Server[:port]/PATH/TO/SOME_RESOUECE?PARAMETERS=VALUE#FLAGS
例:http://www.baidu.com/index.html
3、Web資源
Web上可用的各種資源,如:html文檔,圖檔,視訊或音頻片段,應用程式等,都可以使用URI來進行辨別。用戶端發送的一次請求,隻能請求一個web資源。
(1)、資源分類
web資源分為兩類:分為靜态、動态兩種資源。
靜态資源:伺服器直接發送給用戶端響應的資源。(html文檔、圖檔、流媒體、文本、js)
動态資源:在伺服器上需要伺服器按照某種方式執行之後生成相應的頁面,再将頁面發送給用戶端響應的資源。(.php、.jsp、.NET、js)
(2)、資源路徑映射 ----------------chroot
資源伺服器的映射方式:DocumentRoot、Alias、vhost docroot、使用者自己的docroot
html文檔 -------------超文本标記語言(查詢通路時使用)
格式:
<html>
<head>
<title>xxxx</title>
<meta>
</head>
<body>
</body>
</html>
4、五種并發響應模型(伺服器):
(1)、單程序IO模型:隻有一個程序,每次隻能響應一個使用者請求,串行響應。
(2)、多程序IO模型:同時啟動多個程序,每個程序可以響應一個使用者請求。
(3)、複用的IO模型:一個程序可以響應多個使用者請求。
多線程模型:一個程序可以生産多個線程,每個線程響應一個使用者提供請求。
事件驅動模型:一個程序【直接響應】多個使用者請求。
(4)、複用的多程序IO模型:啟動多個程序,每個程序再分為多個線程,每個線程響應一個使用者提供請求。
(5)、複用的事件驅動IO模型:啟動多個程序,每個程序直接響應多個使用者請求。
5、web伺服器一次完整的http請求的處理過程:
(1)、建立連接配接 -----三次握手
(2)、接收請求:将用戶端發送來的封包解封後放置于服務程序所在的記憶體空間。
(3)、處理請求:對于接收到的資料封包,進行解析。
(4)、通路資源:通過各種IO方式,擷取到使用者請求的資源。
(5、)建構響應封包
(6)、發送響應封包
(7)、記錄通路日志
6、http請求處理的連接配接方式:持久連接配接、短連接配接
持久連接配接:長連接配接,keepalive。對于持久連接配接,有時間限制(15秒)和數量限制(100個)
非持久連接配接:短連接配接
7、http協定的實作方式:httpd、nginx、lighttpd。
二、http協定的封包格式 -----------也稱為http首部、http頭
1、通用格式:
起始行
首部
...
主題
2、請求封包首部 -----------request headers
<Method> <request-URL> <Version>
<header: > value
Host: www.qhdlink.com
<body>
3、響應封包首部 -----------response headers
<Version> <Status-Code> <reason-phrase>
4、對于請求、響應封包首部中,各個字段的定義如下:
Method:請求方法,用戶端希望伺服器執行的操作
GET ----------伺服器到用戶端
HEAD ---------隻在乎表頭
POST ---------用戶端到伺服器
Status-Code --------狀态碼,三位十進制整數,公有5類。
主要作用:是辨別請求處理過程的結果狀态。
五類:
1xx:代碼為100-101,資訊提示
2xx:200-206,成功類的相應狀态碼
3xx:300-305,重定向類相應狀态碼
301:永久重定向(響應一個提示資訊,提示改變位置)
302:臨時重定向(用于響應新版)
304:資源未被修改
4xx:400-415,用戶端錯誤類的響應狀态碼
401:認證質詢
403:請求被拒絕(所請求的資源沒有權限通路、使用者身份錯誤)
404:請求的資源不存在
5xx:500-505,伺服器端錯誤類的響應狀态碼
500:伺服器内部錯誤
502:反向代理和上一級伺服器通信失敗,或請求逾時
reason-phrase ---------狀态短語
如:Forbidden
header ------首部内容
格式:Name: Value
首部分類(5種):通用首部、請求首部、響應首部、實體首部、擴充首部
1)、通用首部:請求封包和響應封包中都可以使用
Date -------------建立封包的時間
Connection -------------連接配接狀态(長連接配接、短連接配接,即keepalive、closed)
Via ---------------經由(封包傳輸過程中經由的代理節點的IP位址)
Cache-Control ----------------緩存控制機制
2)、請求首部:
Accept ----------------可以接受的媒體形式,MIME(多用途網際網路郵件擴充)
媒體格式(MIME格式):Major/Minor ------主類型和次類型
常用的媒體格式有:text/html、text/plaintext、image/jpeg、image/png、application/X-php
Accept-Charset ------------可以接受的字元集
如:ASCII碼(單位元組碼),Linux每個漢字預設3個位元組,Windows每個漢字預設2個位元組
Accept-Encoding ----------可以接受的編碼格式(byte、gzip、deflate)
Accept-Language ----------可以接受的語言
Client-IP --------------可接受的用戶端IP位址
Host -----------請求的伺服器名稱,也稱為主機頭
Referer -----------從哪跳轉過來,不是直接鍵入的
User-Agent --------------用戶端代理程式
Expect -----------期望到的内容(條件使式請求首部,3個)
If-Modified-Since --------某時間後是否被修改過
If-Unmodified-Since -------某時間後是否沒被修改過
If-Match ------本地緩存和伺服器ETag是否相同
3)、響應首部:消息性首部、安全響應首部
消息性首部如下:
Age -----------響應持續的時長;
Server ----------伺服器端軟體程式的名稱、版本
Accept-Ranges -------------伺服器端請求類型範圍,*表所有
Vary --------------伺服器檢視的其他首部清單
安全響應首部如下:
WWW-Authenticate -----------詢問握手
Set-Cookie ----------為用戶端設定Cookie
4)、實體首部:Allow、Location、Content-Encoding、Content-Language、Content-Location、Content-Type、Content-Length
Allow --------------請求方法
Location -------------資源的真正的URL位址
Content-Location ----------真正實體資源的所在位置
5)、擴充首部 ---------X開頭
三、httpd(Apache)
httpd -----------應用程式(http daemon)
1、版本
httpd軟體的版本:httpd-1.3、httpd-2.0、httpd-2.2、httpd-2.4。常用的是httpd-2.4。
2、httpd特性
httpd的特性:高度子產品化(一個核心+多個子產品)。其中,子產品分為兩類:動态和靜态。靜态是編譯到核心中的功能,如果要更改靜态子產品,必須更換核心,是以必須重新開機。
httpd的功能特性(7個):
(1)、支援CGI(通用網關接口)
(2)、支援虛拟主機的功能:辨別虛拟主機----IP+port+主機名
(3)、支援反向代理 ----------相當于代理伺服器,可影響内部拓撲結構
代理(正向代理) --------相當于代理客戶
(4)、支援負載均衡 ----------基于流量、基于業務、基于請求(相當于叢集)
(5)、可進行路徑别名的設定
(6)、支援身份驗證機制:basic、digest。
(7)、支援大量的第三方子產品
3、MPM子產品 ---------多道處理子產品,是并發響應模型的機制。(3種工作方式)
(1)、prefork(預設):是一種多程序IO模型,有一個主程序和多個子程序,一個程序響應一個請求。其子程序,負責處理和響應請求。
prefork具有主程序、子程序(子程序,處理請求和響應請求)。
(2)、worker:複用的多程序IO模型(多線程),多程序多線程,一個線程響應一個請求。其子程序,負責管理線程,線程負責處理和響應請求。
worker具有主程序、子程序、線程(線程,處理請求和響應請求)。
(3)、event:複用的IO模型(事件驅動),其子程序處理和響應請求。
event具有主程序、子程序(子程序,處理請求和響應請求)。
event模型使用:
在httpd-2.4中,event為建議使用模型,其前的版本中,event不穩定或沒有加載。
在centos6 中,采用httpd-2.2,是以采用的是event 測試模型,也不支援動态機制的MPM。
在centos7 中,采用httpd-2.4,采用成熟的event,支援MPM機制。
四、httpd-2.2
1、httpd-2.2中的服務(centos6)
啟動服務 ----------------/etc/rc.d/init.d/httpd
# /etc/rc.d/init.d/httpd {start|stop|restart|reload|status}
# service httpd {start|stop|restart|reload|status}
開機自啟:chkconfig [--level 23456] httpd on|off
2、httpd-2.2的程式環境
配置檔案:
/etc/httpd/conf/httpd.conf ----------主配置檔案
/etc/httpd/conf.d/*.conf ----------輔助配置檔案
/etc/httpd/conf.d/magic -----------實作MIME功能(多用途網際網路郵件擴充)
/etc/sysconfig/httpd -------------httpd伺服器【啟動腳本】的配置檔案
程式檔案:/usr/sbin/httpd
/usr/sbin/httpd.event
/usr/sbin/httpd.worker
日志檔案:/var/log/httpd -----包括通路日志和錯誤日志
預設站點的文檔和目錄:/var/www/html
子產品檔案的路徑:/usr/lib64/httpd/modules -----------存在符号連結檔案/etc/httpd/modules
3、httpd-2.2與centos7的httpd-2.4比較:
啟動服務:/usr/lib/systemd/system/httpd.service
# systemctl {start|stop|restart|reload|status} httpd[.service]
開機自啟:
# systemctl enable|disable httpd.service
在httpd2.4中,支援靜态子產品,每個MPM模型對應一個子產品。
配置檔案:(多了一種)
/etc/httpd/conf.modules.d -------------額外的子產品專用的配置檔案
程式檔案(二進制檔案):---------------/usr/sbin/httpd
/usr/lib64/httpd/modules/mod_mpm_event.so
/usr/lib64/httpd/modules/mod_mpm_prefork.so
/usr/lib64/httpd/modules/mod_mpm_worker.so
/usr/sbin/apachectl -------------------服務控制指令
4、安裝httpd --------------------httpd、httpd-tools、httpd-devel、httpd-manual
安裝httpd的兩種方式如下:
1)、rpm包 -----本地CD光牒yum源中
2)、編譯安裝 ------定制新功能,為了安全,可去除帶有漏洞後門的子產品
安裝的httpd擁有的四個包:主程式包、httpd的工具包、httpd的開發包、離線幫助文檔。
# yum list all httpd*
httpd2.2的主配置檔案:-------------------/etc/httpd/conf/httpd.conf
在此配置檔案中,所有的配置選項都被稱為選項,指令格式為:directive value(駝峰式)。在修改了配置檔案中的指令後,可以使用reload使之生效。在httpd2.2 中,如果【更改了監聽的IP位址,則必須重新開機服務】。在主配置檔案中,所有的指令被分别寫到三個配置部分中
下面是修改配置檔案中的指令:(16類)
(1)、修改監聽的位址和端口
格式:Listen [IP:]PORT
注意:listen指令可以定義多次,如果省略了IP位址,即 0.0.0.0,意味着httpd服務程序将監聽伺服器上配置的所有IP位址。
(2)、持久連接配接的特性(3個)------------KeepAlive
持久連接配接,就是當伺服器和用戶端已經建立其tcp連接配接之後,在完成一次請求之後,連接配接不斷開,而是等待其他使用者發送請求。
斷開條件:數量限制、時間限制。
相關指令:KeepAlive Off|On ------------------持久連接配接開啟或關閉
MaxKeepAliveRequests 100 ----------------最多持久連接配接數
KeepAliveTimeout 15 --------------持久連接配接的時間,預設機關為秒
# httpd -t -----------------測試文法結構的對錯
請求測試:
# telnet SERV_IP SERV_PORT
GET /PATH/TO/RESOURCE HTTP/1.1
Host: SERV_IP
例:# telnet 172.16.67.1 80 ------------進入Telnet模式,進行請求輸入。
> GET html HTTP/1.1
> Host: 172.16.67.1 -------------兩次回車載入
(3)、MPM ------------多道處理子產品
httpd-2.2的MPM不支援DSO機制,并且event為測試模式。
# httpd -M -----------列出所有支援子產品,包括靜态和共享子產品
# httpd -l -----------檢視靜态編譯的子產品
三個配置檔案:/usr/sbin/httpd、/usr/sbin/httpd.event、/usr/sbin/httpd.worker。
與prefork相關的配置指令:(子程序)
<IfModule prefork.c>
StartServers 8 -------------在服務剛啟動時,預先fork幾個子程序
MinSpareServers 5 --------------最小預留的空閑子程序的數量
MaxSpareServers 20 -------------最多預留的空閑子程序的數量
ServerLimit 256 --------------為MaxClients指定的最大值
MaxClients 256 ----------------最大的并發通路量
MaxRequestsPerChild 4000 -------------------每個子程序處理的最大請求數量
</IfModule>
與worker相關的配置指令:(線程)
<IfModule worker.c>
StartServers 4 -------------------在服務剛啟動時,預先fork幾個子程序
MaxClients 300 ------------------并行通路的上限
MinSpareThreads 25 -------------------最小預留的空閑線程數量
MaxSpareThreads 75 -----------------最大預留的空閑線程數量
ThreadsPerChild 25 -----------------每個程序管理的最大線程數量
MaxRequestsPerChild 0 ------------------每個子程序處理的最大請求數量
(4)、DSO機制 -----------LoadModule
modules,即/etc/httpd/modules。
(5)、"Main" Server -----------定義主機的基本指令
格式:ServerName FQDN[:PORT]
DocumentRoot "/var/www/html"
配置:
http://172.16.69.1/test.html ----------路徑映射
DocumentRoot "/myweb/data"
例:配置了配置檔案後,進行以下操作:
# mkdir -pv /myweb/data
# vim /myweb/data/index.html
重載配置檔案
用戶端通路到http://172.16.69.1/index.html
(6)、站點資源的通路控制
1)、基于檔案系統的通路控制:分為三類,分别為:基于【指定目錄】的通路控制、基于【特定檔案】的通路控制、基于【模式比對】進行檔案的通路控制。
基于【指定目錄】的通路控制,格式如下:
<Directory "/PATH/TO/SOME_DIR">
Directive Value
</Directory>
基于【特定檔案】的通路控制,格式如下:
<File "/PATH/TO/SOME_FILE">
</File>
基于【模式比對】進行檔案的通路控制,格式如下:
<FileMatch "PATTERN">
</FileMatch>
2)、基于URL路徑進行通路控制:分為兩類,分别為:基于【URL】進行、基于【模式比對】進行URL路徑通路。
基于URL進行,格式如下:
<Location "/PATH/TO/SOME_URL">
</Location>
基于模式比對進行URL路徑通路,格式如下:
<LocationMatch "URL_PATTERN">
</LocationMatch>
3)、常用的目錄中的通路控制指令有:各種options指令、AllowOverride指令。
Options指令:
Indexes ---------允許索引(一般用于資源下載下傳站點),對于正常的Web站點來說,應禁用此功能。
FollowSymLinks -------跟蹤符号連結
SymLinksifOwnerMatch -------------隻有當子程序的所有者和連結檔案的所有者為同一使用者時,才跟蹤符号連結
ExecCGI ---------允許執行CGI腳本
AllowOverride指令:-----------------控制那些允許放置于 .htaccess 檔案中的指令,具有繼承特性。該指令的值設定為None
.htaccess的三個配置檔案:/myweb/data/.htaccess /myweb/data/images/.htaccess /myweb/data/admin/.htaccess
Order指令、Allow指令、Deny指令:
Order指令 ----------定義基于IP位址的通路控制,規定了通路控制的檢查順序,allow,deny 和 deny,allow 通路結果不同。
(7)、web站點首頁檔案的定義
當使用者給出的URL中,【沒有明确指明資源的具體名稱】時,此處會根據此處的檔案名去依次比對,先後順序優先。
例:
DirectoryIndex index.html in.html index.html.var
(8)、定義路徑别名
格式:Alias /URL/ "/PATH/TO/SOME_DIR/"
在Alias指令格式中,URL右側的"/"相當于後面的路由右側的"/",他們是比對的。
(9)、日志功能:錯誤日志、通路日志。
通路日志的各選項解釋:
%h -----------用戶端的IP位址
%l ------------登入名,沒有則為"-"
%s ------------狀态資訊
%b ------------資源大小
(10)、離線幫助手冊 ---------------配置檔案:/etc/httpd/conf.d/manual.conf(重載之後生效)
# yum -y install httpd-manual
(11)、基于使用者的通路控制
httpd的認證功能:(2種)
認證質詢機制(響應封包的狀态碼為 401)-----------需進行身份驗證,先拒絕通路,進行登入
認證 -------用戶端填寫賬戶和密碼,登入後之後,發送封包
httpd的認證方式:(2種)
basic認證 ---------明文認證
digest認證 --------消息摘要認證
虛拟使用者賬号 ----------該賬号無法進行系統級認證,隻能用于通路伺服器上某特定服務的賬戶
一般來講,虛拟使用者時存放于某特定的資料格式中,如:文本檔案、SQL資料庫(寫效率高)、LDAP目錄資料庫(讀效率高)
安全域 ------需要通過使用者認證才能通路資源
htpasswd指令 ---------------------建立使用者/組檔案
常用選項:
-c 建立使用者賬戶檔案(隻用于建立第一個,建第二個使用者以後的賬戶不要用-c)
-m 使用md5加密使用者密碼
-s 使用sha加密使用者密碼
-D 删除使用者
例:basic認證的配置(定義安全域、建立使用者/組檔案)
1)、定義安全域
<Directory "/PATH/TO/SOME_DIR"> ------------基于【虛拟使用者】做身份驗證
Options None
AllowOverride None
Authtype basic
AuthName "SOME_STRING"
AuthUserFile "/PATH/TO/HTTP_USER_FILE"
Require user user1 user2 ...
<Directory "/PATH/TO/SOME_DIR"> ----------基于【虛拟組】做身份驗證
AuthGroupFile "/PATH/TO/HTTP_GROUP_FILE"
Require group group1 group2 ...
2)、建立使用者/組的檔案(htpasswd指令)
格式:GROUP_NAME: user1 user2 ...
(12)、系統狀态資料查詢:server-status
# httpd -M | grep status
ExtendedStatus On|Off -----------開啟或關閉更多的額外系統狀态資訊
<Location /server-status>
SetHandler server-status
Order deny,allow
Deny from all
Allow from 172.16
</Location>
(13)、虛拟主機
對于每個web站點,都有一個屬于其獨立的辨別。Main Server 和虛拟主機不能同時使用。兩個都有的話,Main Server失效,虛拟主機有效。
站點辨別:IP位址、PORT、主機頭(FQDN)
三種典型的虛拟主機實作方式:
1)、基于IP位址的虛拟主機 -----每個虛拟主機使用一個獨立的IP位址
2)、基于PORT端口的虛拟主機 -------每個虛拟主機使用一個端口
3)、基于主機頭的虛拟主機 ----------每個虛拟主機使用一個獨有的FQDN
虛拟主機的配置方法:------------在 ./conf.d/ 下進行主機配置
<VirtualHost IP:80>
DocumentRoot /www/docs/dummy-host.example.com
ServerName dummy-host.example.com
</VirtualHost>
vhosts-www1.conf
基于IP位址的配置示例:(2台虛拟主機)---------------vim /etc/httpd/conf.d/vhost-www1.conf
# vim /etc/httpd/conf.d/vhost-www1.conf
# vim /etc/httpd/conf.d/vhost-www2.conf
/etc/httpd/conf.d/vhosts-www1.conf
<VirtualHost 172.16.69.1:80>
DocumentRoot "/myweb/vhosts/www1"
ServerName www1.qhdlink.com
</VirtualHost>
/etc/httpd/conf.d/vhosts-www2.conf
<VirtualHost 172.16.69.2:80>
DocumentRoot "/myweb/vhosts/www2"
ServerName www2.qhdlink.com
基于端口的配置示例:------------/etc/httpd/conf.d/vhosts-www3.conf
注意基于端口配置的時候,要指明端口号,不然和沒指明的時候一樣,不是端口的配置。進行端口配置的前提,是需要讓httpd事先監聽于指定的額外端口,即Listen PORT。
/etc/httpd/conf.d/vhosts-www3.conf
Listen 60080
<VirtualHost 172.16.69.1:60080>
DocumentRoot "/myweb/vhosts/www3"
ServerName www3.qhdlink.com
基于FQDN的虛拟主機配置示例:----------------------/etc/httpd/conf.d/vhosts-www4.conf
主機名成為關鍵,IP和端口号都可以和前面一緻。
# httpd -t ------檢驗文法
/etc/httpd/conf.d/vhosts-www4.conf
NameVirtualHost 172.16.69.1:80
<VirtualHost 172.16.69.1:80>
DocumentRoot "/myweb/vhosts/www4"
ServerName www4.qhdlink.com
(14)、https的實作 ------------SSL會話是基于IP位址所建立的,【單IP位址】的主機上,僅可以建立一個https虛拟主機。
1)、為httpd生成私鑰并簽發證書,步驟如下:
1).生成私鑰及證書請求
# mkdir /etc/httpd/ssl
# cd /etc/httpd/ssl
# (umask 077; openssl genrsa -out httpd.key 2048)
# openssl req -new -key httpd.key -out httpd.csr -days 3653
# scp httpd.csr 172.16.72.1:/tmp
2).在CA上簽發證書
CA]# openssl ca -in /tmp/httpd.csr -out certs/httpd.crt -days 3653
CA]# scp certs/httpd.crt 172.16.69.1:/etc/httpd/ssl
3).在httpd伺服器上清除證書請求檔案
# rm -f httpd.csr
2)、配置httpd -------------------支援使用SSL,确定已裝載mod_ssl子產品
# yum -y install mod_ssl
修改配置檔案,修改公鑰和私鑰的安裝位置。
/usr/lib64/httpd/modules/mod_ssl.so
/etc/httpd/conf.d/ssl.conf
<VirtualHost 172.16.69.1:443>
DocumentRoot "/myweb/vhosts/ssl"
ServerName www.qhdlink.com
SSLCertificateFile /etc/httpd/ssl/httpd.crt
SSLCertificateKeyFile /etc/httpd/ssl/httpd.key
(15)、user/group ------------指定以哪個使用者的身份運作httpd服務程序
格式:
User apache
Group apache
(16)、mod_deflate子產品 -----------------壓縮頁面,優化傳輸速度
SetOutputFilter DEFLATE
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
DeflateCompressionLevel 9 ----------------壓縮級别,1~9,9最高
BrowserMatch ^Mozilla/4 gzip-only-text/html ------------浏覽器
BrowserMatch ^Mozilla/4\.0[678] no-gzip
BrowserMatch \bMSI[E] !no-gzip !gzip-only-text/html
五、httpd-2.4
1、httpd-2.4具有特性如下:(10個)
(1)、MPM支援DSO機制,以子產品方式加載和解除安裝
(2)、event MPM 穩定,生産可用
(3)、支援異步IO機制,使得并發傳輸性能提高
(4)、支援沒子產品及每目錄單獨日志級别定義
(5)、每請求相關的專用配置
(6)、增強版的表達式分析器
(7)、毫秒級的keepalive逾時時長
(8)、基于FQDN的虛拟主機無需使用NameVirtualHost指令
(9)、支援使用者自定義變量
(10)、更低的内在開銷
2、httpd-2.4的新子產品(3個):
mod_proxy_fcgi
mod_proxy_scgi
mod_remoteip
3、安裝httpd-2.4 ---------centos6中需編譯安裝。
# yum install httpd
httpd的配置環境:主配置檔案、子產品的配置檔案、片段配置檔案。
主配置檔案 ---------------/etc/httpd/conf/httpd.conf
子產品配置檔案 -------------/etc/httpd/conf.modules.d/*.conf
片段配置檔案 -------------/etc/httdp/conf.d/*.conf
4、httpd-2.4配置特點(特有):
(1)、切換MPM -----------三個子產品隻能有一個生效,不能讓多個MPM同時生效
編輯:/etc/httpd/conf.modules.d/00-mpm.conf
LoadModule mpm_prefork_module modules/mod_mpm_prefork.so
LoadModule mpm_worker_module modules/mod_mpm_worker.so
LoadModule mpm_event_module modules/mod_mpm_event.so
(2)、基于IP位址的通路控制
不再支援Allow、Deny這樣的指令,改用Require指令完成通路控制功能。
注意:【預設】情況下,httpd-2.4拒絕所有主機通路。如果拒絕和允許同時要控制,則所有Require必須放在RequireAny容器中。
【允許和拒絕】同時要控制,則所有Require指令必須放在RequireAny容器中,具體解釋如下:
<RequireAny>
Require all denied
Require ip 172.16.69.1
</RequireAny>
Require all granted
Require not ip 172.16.69.1
Require host qhdlink.com
(3)、虛拟主機
即便使用基于FQDN方式建構的虛拟主機,也無需再使用NameVirtualHost指令。
<VirtualHost 172.16.72.1:80>
DocumentRoot "/myweb/vhosts/www"
<Directory "/myweb/vhosts/www"
Require all granted
<VirtualHost>
(4)、毫秒級的keepalive持久連接配接 ----------單獨建立檔案/etc/httpd/conf.d/keepalive.conf
/etc/httpd/conf.d/keepalive.conf
KeepAlive On
KeepAliveTimeout 500ms --------------支援寫為 500ms
MaxKeepAliveRequests 100
CentOS 7:httpd-2.4
啟動服務:Systemd Unit檔案,/usr/lib/systemd/system/httpd.service
systemctl {start|stop|restart|reload|status} httpd[.service]
開機自動啟動或停止服務:
systemctl enable|disable httpd.service
5、httpd-2.4的程式環境
6、curl指令 ------------檔案傳輸工具
格式:curl [options] [URL...]
-A <string> ---------------設定使用者代理發送給伺服器
--basic ------------------使用HTTP基本認證
--tcp-nodelay ----------------使用TCP_NODELAY選項
-e <URL> ------------------來源網址
--cacert <file> ------------CA憑證 (SSL)
--compressed --------------要求傳回的壓縮格式
-H <line> ---------------自定義首部資訊傳遞給伺服器
-I ----------------------隻顯示響應封包首部資訊
--limit-rate <rate> --------------設定傳輸速度
-u <user[:password]> ------------設定伺服器的使用者和密碼
-0 -------------使用http/1.0
7、elinks指令
格式:elinks [OPTION]... [URL]...
-dump ------------------------直接将URL的内容輸出至标準輸出
8、ab指令 ------------壓力測試工具
-c -------------并發連接配接數
-n -------------請求總數
-k -------------使用keepalive
本文轉自little_ding 51CTO部落格,原文連結:http://blog.51cto.com/12496428/1966692,如需轉載請自行聯系原作者