9月28日 centos6上httpd2.2基本配置 2和https的實現(xiàn)

1、基于組賬號認證

1、定義安全域
vim /etc/httpd/conf.d/test.conf 
<directory /app/vebsite1/secret>
        authtype basic
        authname "secret directory"
        authuserfile "/etc/httpd/conf.d/.httpusers"
        authgroupfile "/etc/httpd/conf.d/.httpgroup"
        require group website1
</directory>
2、創(chuàng)建用戶賬號和組賬號文件;
htpasswd -s .httpusers heihei  ---創(chuàng)建用戶賬號文件
[root@centos6 conf.d]#!cat   ---查看用戶賬號文件
cat .httpusers 
hehe:vb2LD0bz6/d5k
haha:{SHA}Jd07W9uPYMtdvlsDI7QXYPbbIcY=
xixi:{SHA}Jd07W9uPYMtdvlsDI7QXYPbbIcY=
heihei:{SHA}Jd07W9uPYMtdvlsDI7QXYPbbIcY=
vim /etc/httpd/conf.d/.httpgroup   ---創(chuàng)建組賬號文件
website1:hehe haha
website2:xixi heihei
3、service httpd reload

2、遠程客戶端和用戶驗證的控制

Satisfy ALL|Any
ALL 客戶機IP和用戶驗證都需要通過才可以
Any客戶機IP和用戶驗證,有一個滿足即可

[root@centos6 ~]#vim /etc/httpd/conf.d/test.conf 
<directory /app/vebsite1/secret>
        authtype basic
        authname "secret directory"
        authuserfile "/etc/httpd/conf.d/.httpusers"
        require valid-user
        order allow,deny
        allow from 172.18.21.107        
        satisfy all   ---表示基于身份驗證和ip地址都要滿足才能訪問這個這個目錄
</directory>

3、虛擬主機配置

有三種實現(xiàn)方案:
基于ip:為每個虛擬主機準備至少一個ip地址
基于port:為每個虛擬主機使用至少一個獨立的port
基于FQDN:為每個虛擬主機使用至少一個FQDN
注意:一般虛擬機不要與main主機混用;因此,要使用虛擬主機,一般先禁用main主機
禁用方法:注釋中心主機的DocumentRoot指令即可
實驗步驟

一、基于ip地址
1、創(chuàng)建三個網(wǎng)頁文件
mkdir /app/website{1,2,3}
echo /app/website1/index.html > /app/website1/index.html
echo /app/website2/index.html > /app/website2/index.html
echo /app/website3/index.html > /app/website3/index.html
2、增加三個ip地址
ip addr add 172.18.21.1/16 dev eth2
ip addr add 172.18.21.2/16 dev eth2
ip addr add 172.18.21.3/16 dev eth2
3、vim /etc/httpd/conf.d/test.conf 
<virtualhost 172.18.21.1:80>
DocumentRoot "/app/website1"
</virtualhost>
<virtualhost 172.18.21.2:80>
DocumentRoot "/app/website2"
</virtualhost>
<virtualhost 172.18.21.3:80>
DocumentRoot "/app/website3"
</virtualhost>
二、基于端口號
vim /etc/httpd/conf.d/test.conf 
listen 172.18.21.1:81
listen 172.18.21.1:82
listen 172.18.21.1:83
<virtualhost 172.18.21.1:81>
DocumentRoot "/app/website1"
</virtualhost>
<virtualhost 172.18.21.1:82>
DocumentRoot "/app/website2"
</virtualhost>
<virtualhost 172.18.21.1:83>
DocumentRoot "/app/website3"
</virtualhost>
三、基于FQDN
1、vim /etc/httpd/conf.d/test.conf 
namevirtualhost *:80   ---要想基于FQDN,必須加上這一項,指定是以名稱的方式搭建虛擬主機
<virtualhost *:80>
servername www.a.com   --- 虛擬主機名字,也就是將來用戶訪問網(wǎng)站時用到的FQDN域名,這里創(chuàng)建了三個虛擬主機
DocumentRoot "/app/website1"
ErrorLog logs/www.a.com-error_log   ---指定錯誤認知的路徑
CustomLog logs/www.a.com-access_log common   ---指定訪問日志的路徑,并定義類型,common類型在主配置文件里面已經(jīng)定義了,在這里就不用加上LogFormat這一行了。
<directory "/app/website1">   ---訪問www.a.com時需要基于身份驗證
        authtype basic
        authname "access"
        authuserfile "/etc/httpd/conf.d/.httpusers"
        require user xixi haha
</directory>
</virtualhost>
<virtualhost *:80>
servername www.b.net
DocumentRoot "/app/website2"
ErrorLog logs/www.b.net-error_log
CustomLog logs/www.a.com-access_log common
</virtualhost>
<virtualhost *:80>
servername www.c.org
DocumentRoot "/app/website3"
ErrorLog logs/www.c.org-error_log
CustomLog logs/www.c.org-access_log common
</virtualhost>
2、搭建一個nds服務(wù)器,地址為172.18.21.107,使這個三個域名解析后都指向同一個ip地址,在這里都是172.18.21.106 這個主機,因為你要在這個主機上搭建三個虛擬主機即三個web網(wǎng)站。      
3、在windows上將nds修改為172.18.,21.107,然后進行測試訪問
http://www.a.com/
http://www.b.net/
http://www.c.org/
links http://www.c.org/   ---也可以用這個命令在linux主機的字符界面訪問,但這個主機的dns要指向172.18.21.107

總結(jié): 基于FQDN的虛擬主機是生產(chǎn)中最常用的,一般我們在搭建虛擬主機時,要將main主機禁用,但如果不禁用,基于ip和端口號創(chuàng)建虛擬主機時main主機不會失效,訪問main主機的主站點文件時仍然可以訪問到,但如果基于FQDN創(chuàng)建時,main主機就會失效,這個時候如果訪問main主機的主站點時,就會跳到虛擬主機的主站點,并且誰是第一個虛擬主機時就會跳到誰那里。因 此創(chuàng)建虛擬主機時最好將main主機禁用。當基于FQDN創(chuàng)建虛擬主機后,如果用http://172.18.21.106/,默認訪問的是第一個虛擬主機的主網(wǎng)站文件。

4、status頁面

1、 查看一下 status_module這個模塊是否安裝了
[root@centos6 conf.d]#httpd -M |grep status
Syntax OK
 status_module (shared)
2、在配置文件中要定義這個模塊
vim /etc/httpd/conf/httpd.conf 
LoadModule status_module modules/mod_status.so
3、vim /etc/httpd/conf.d/status.conf  ---創(chuàng)建一個配置文件
<location /server-status>   --- /server-status是個URL,這個目錄是自己隨便定義的一個虛擬的目錄
        sethandler server-status
        order allow,deny
        allow from 172.18
</location>
ExtendedStatus On     ---加上這一行會顯示的更詳細一些

4、訪問這個網(wǎng)站就可以看到服務(wù)器的狀態(tài)信息了

Paste_Image.png

5、http協(xié)議

①http協(xié)議
http/0.9, http/1.0, http/1.1, http/2.0
http協(xié)議:stateless 無狀態(tài)
服務(wù)器無法持續(xù)追蹤訪問者來源,也就是當你第二次訪問這個服務(wù)器時,服務(wù)器又不知道你是誰了。
解決http協(xié)議無狀態(tài)方法
cookie :客戶端存放,分為兩種,一種為重cookie,一種為輕cookie,比如你在淘寶上買東西放到購物車里的東西,服務(wù)器會將你的登錄信息和一些購物車里的信息以cookie的形式發(fā)送給你,并存儲在你的主機上,當你下次用同一個主機去訪問淘寶時,你會攜帶這個cookie信息,這時服務(wù)器就知道你的身份了,這樣購物車里的東西就不會丟失,這種稱為重cookie,輕cookie只存放你的登錄信息。cookie是服務(wù)器端生成后傳給客戶端的。在瀏覽器的選項/設(shè)置--->高級設(shè)置---->網(wǎng)頁內(nèi)容高級設(shè)置中可以看到cookie。
session :服務(wù)器端存放,cookie要配合session使用,因為cookie只是存放在特定的主機,換了主機之后你之前訪問的信息,比如購物車里面的信息又丟失了,session的作用就是將你的cookie里面的登錄信息和網(wǎng)站訪問記錄到一個session表里,并且存儲到服務(wù)器上,下次你登錄淘寶的時候,服務(wù)器就會和session里面記錄的一些登錄信息對比,發(fā)現(xiàn)是你的登錄信息,就識別出了你,你的訪問記錄及購物車里面的東西不會丟失。
http事務(wù):一次訪問的過程
請求:request
響應(yīng):response
②HTTP請求報文和響應(yīng)報文

Paste_Image.png
Paste_Image.png

③報文語法格式:
request報文
<method> <request-URL> <version>
<headers>
<entity-body>
response報文
<version> <status> <reason-phrase>
<headers>
<entity-body>
method: 請求方法,標明客戶端希望對服務(wù)器資源執(zhí)行的動作。
Method 方法:
GET:從服務(wù)器獲取一個資源
HEAD:只從服務(wù)器獲取文檔的響應(yīng)首部
POST:向服務(wù)器輸入數(shù)據(jù),比如字符串等,通常會再由網(wǎng)關(guān)程序繼續(xù)處理
PUT:將請求的主體部分存儲在服務(wù)器中,如上傳文件
DELETE:請求刪除服務(wù)器上指定的文檔
TRACE:追蹤請求到達服務(wù)器中間經(jīng)過的代理服務(wù)器
OPTIONS:請求服務(wù)器返回對指定資源支持使用的請求方法
version:
HTTP/<major>.<minor>,比如HTTP/1.1---目前用的比較多的協(xié)議類型
status:
三位數(shù)字,如200,301, 302, 404, 502; 標記請求處理過程中發(fā)生的情況
reason-phrase:
狀態(tài)碼所標記的狀態(tài)的簡要描述
headers:
每個請求或響應(yīng)報文可包含任意個首部;每個首部都有首部名稱,后面跟一個冒號,而后跟一個可選空格,接著是一個值
entity-body:請求時附加的數(shù)據(jù)或響應(yīng)時附加的數(shù)據(jù)
④http協(xié)議狀態(tài)碼分類
status(狀態(tài)碼):
1xx:100-101信息提示
2xx:200-206成功
3xx:300-305重定向
4xx:400-415錯誤類信息,客戶端錯誤
5xx:500-505錯誤類信息,服務(wù)器端錯誤
常用的狀態(tài)碼
200:成功,請求數(shù)據(jù)通過響應(yīng)報文的entity-body部分發(fā)送;OK
301:請求的URL指向的資源已經(jīng)被刪除;但在響應(yīng)報文中通過首部Location指明了資源現(xiàn)在所處的新位置;Moved Permanently,表示永久重定向,在配置文件里設(shè)置網(wǎng)站的別名時就是永久的重定向。

[root@centos6 conf.d]#curl -I www.360buy.com
HTTP/1.1 301 Moved Permanently   ---表示永久重定向
Server: JDWS/2.0
Date: Thu, 28 Sep 2017 14:55:26 GMT
Content-Type: text/html
Content-Length: 272
Connection: keep-alive
Location: http://www.jd.com/    ---新的網(wǎng)站的位置
Via: BJ-H-NX-112(), http/1.1 ZZ-CM-1-JCS-145 ( [cRs f ])
Age: 1353

302:響應(yīng)報文Location指明資源臨時新位置Moved Temporarily,是臨時重定向。

[root@centos6 conf.d]#curl -I www.jd.com
HTTP/1.1 302 Moved Temporarily   ---表示臨時重定向
Server: JDWS/2.0
Date: Thu, 28 Sep 2017 14:56:51 GMT
Content-Type: text/html
Content-Length: 157
Connection: keep-alive
Location: https://www.jd.com/  ---新的網(wǎng)站是https
Strict-Transport-Security: max-age=360

304:客戶端發(fā)出了條件式請求,但服務(wù)器上的資源未曾發(fā)生改變,則通過響應(yīng)此響應(yīng)狀態(tài)碼通知客戶端;Not Modified,表示服務(wù)器端是利用緩存把資源發(fā)送給客戶端,可以用ctrl+f5強制刷新。
401:需要輸入賬號和密碼認證方能訪問資源;Unauthorized,基于basic認證登錄時會在日志里面發(fā)現(xiàn)這個狀態(tài)碼。
403:請求被禁止;Forbidden,一個原因是服務(wù)器的配置文件里面設(shè)定了允許哪些主機訪問,另外一個原因可能是你訪問的文件夾文件系統(tǒng)的權(quán)限不足。
404:服務(wù)器無法找到客戶端請求的資源;Not Found
500:服務(wù)器內(nèi)部錯誤;Internal Server Error
502:代理服務(wù)器從后端服務(wù)器收到了一條偽響應(yīng),如無法連接到網(wǎng)關(guān);Bad Gateway
503 :服務(wù)不可用,臨時服務(wù)器維護或過載,服務(wù)器無法處理請求
504:網(wǎng)關(guān)超時
總結(jié):method是客戶端請求服務(wù)器端要做什么,而狀態(tài)碼是服務(wù)器端返回給客戶端的狀態(tài)信息。
更多信息可以參考火狐瀏覽器:https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Status
⑤http協(xié)議首部
首部的分類:通用首部、請求首部、響應(yīng)首部、實體首部、擴展首部
通用首部:
Date: 報文的創(chuàng)建時間
Connection:連接狀態(tài),如keep-alive, close
Via:顯示報文經(jīng)過的中間節(jié)點(代理,網(wǎng)關(guān))
Cache-Control:控制緩存,如緩存時長
MIME-Version:發(fā)送端使用的MIME版本
請求首部:
Accept:通知服務(wù)器自己可接受的媒體類型
Accept-Charset:客戶端可接受的字符集
Accept-Encoding:客戶端可接受編碼格式,如gzip
Accept-Language:客戶端可接受的語言
Client-IP: 請求的客戶端IP
Host: 請求的服務(wù)器名稱和端口號
Referer:跳轉(zhuǎn)至當前URI的前一個URL
User-Agent:客戶端代理,瀏覽器版本

6、curl命令和elinks工具

curl [options] [URL...]
-A/--user-agent <string> 設(shè)置用戶代理發(fā)送給服務(wù)器
-e/--referer<URL> 來源網(wǎng)址
--cacert<file> CA證書(SSL)
-k/--insecure 允許忽略證書進行SSL 連接
--compressed 要求返回是壓縮的格式
-H/--header <line>自定義首部信息傳遞給服務(wù)器
-i顯示頁面內(nèi)容,包括報文首部信息
-I/--head 只顯示響應(yīng)報文首部信息
-D/--dump-header <file>將url的header信息存放在指定文件中
--limit-rate <rate> 設(shè)置傳輸速度
--basic 使用HTTP基本認證
-u/--user <user[:password]>設(shè)置服務(wù)器的用戶和密碼
-L 如果有3xx響應(yīng)碼,重新發(fā)請求到新位置,進行強制重定向
-o<file> 將網(wǎng)絡(luò)文件保存為指定的文件中
-O使用URL中默認的文件名保存文件到本地
-0/--http1.0 使用HTTP 1.0
-C -選項可對文件使用斷點續(xù)傳功能
-c/--cookie-jar <file name> 將url中cookie存放在指定文件中
-x/--proxy <proxyhost[:port]> 指定代理服務(wù)器地址
-X/--request <command> 向服務(wù)器發(fā)送指定請求方法
-U/--proxy-user <user:password> 代理服務(wù)器用戶和密碼
-T 選項可將指定的本地文件上傳到FTP服務(wù)器上
--data/-d 方式指定使用POST方式傳遞數(shù)據(jù)
elinks工具:
elinks[OPTION]... [URL]...
-dump: 非交互式模式,將URL的內(nèi)容輸出至標準輸出
-source:打印源碼
用法和links相同。
示例

curl -A "IE8" www.a.com   ---設(shè)置用戶代理發(fā)送給服務(wù)器,也就是可以偽造瀏覽器的類型,在日志里面可以查到
curl -e www.baidu.com www.a.com  ---可以偽造從哪跳轉(zhuǎn)而來
curl -H "host: www.org" www.a.com   ---構(gòu)造一個首部信息發(fā)給服務(wù)器
curl -D /app/head www.a.com   ---將響應(yīng)報文的首部信息存放到指定文件中
curl --limit-rate 1024 -o /app/f1.log http://www.a.com/f1.html     ---設(shè)置傳輸速度為1kB/s
curl --basic -u haha:123456 www.c.org   ---訪問網(wǎng)站的時候直接把用戶名和密碼都加上
curl -L www.360buy.com    ---可以顯現(xiàn)自動跳轉(zhuǎn)至新頁面,不加-L只會報錯但不會跳轉(zhuǎn),瀏覽器會自動跳轉(zhuǎn)
curl -O ftp://172.18.0.1/pub/ks/CentOS-6.9-x86_64.cfg
---使url中的CentOS-6.9-x86_64.cfg這個文件保存到當前目錄下
curl -c /app/baiducookie www.baidu.com   ---將url中的cookie存放到指定目錄中

7、mod_deflate模塊,使服務(wù)器端支持文件壓縮

使用deflate_module模塊壓縮頁面優(yōu)化傳輸速度
適用場景:
(1) 節(jié)約帶寬,額外消耗CPU;同時,可能有些較老瀏覽器不支持
(2) 壓縮適于壓縮的資源,例如文本文件
Level of compression (Highest 9 -Lowest 1)
DeflateCompressionLevel 9
示例

[root@centos6 conf.d]#httpd -M |grep "deflate_module"
Syntax OK
deflate_module (shared)   ---發(fā)現(xiàn)這個模塊已經(jīng)加載了
vim /etc/httpd/conf.d/test2.conf 
LoadModule deflate_module modules/mod_deflate.so   ---這一行不需要寫了,因為這個模塊已經(jīng)加載了,說明在主配置文件中已經(jīng)寫了,這里的modules/mod_deflate.so是相對路徑,是相對于/etc/httpd的目錄,因為主配置文件中已經(jīng)規(guī)定了ServerRoot "/etc/httpd",所以在配置文件中一般都是用相對路徑表示,就是相對于這個目錄
SetOutputFilter DEFLATE
# Restrict compression to these MIME types
AddOutputFilterByType DEFLATE text/plain   ---設(shè)置壓縮的文件格式,這個是txt文本格式
AddOutputFilterByType DEFLATE text/html   ---這個是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
測試
[root@centos6 app]#curl --compressed -I http://www.a.com/f1.html
HTTP/1.1 200 OK
Date: Fri, 29 Sep 2017 02:07:54 GMT
Server: Apache
Last-Modified: Fri, 29 Sep 2017 01:27:33 GMT
ETag: "c0004-706-55a49ede22dd1"
Accept-Ranges: bytes
Vary: Accept-Encoding
Content-Encoding: gzip     ---發(fā)現(xiàn)已經(jīng)壓縮了
Content-Length: 431   ---壓縮后文件的大小為431個字節(jié)
Connection: close
Content-Type: text/html; charset=UTF-8
[root@centos6 website1]#ll f1.html 
]-rw-r--r-- 1 root root 1798 Sep 29 09:27 f1.html   ---原文件的大小為1798個字節(jié),看來壓縮比還是很大的

8、https的實現(xiàn)

https:http over ssl
SSL會話的簡化過程
(1) 客戶端發(fā)送可供選擇的加密方式,并向服務(wù)器請求證書
(2) 服務(wù)器端發(fā)送證書以及選定的加密方式給客戶端,這個證書是用CA的私鑰加密的服務(wù)器的公鑰以及證書的有效期等信息,也就是CA數(shù)字簽名的證書。
(3) 客戶端取得證書并進行證書驗證
如果信任給服務(wù)器發(fā)證書的CA,客戶端會實驗得到CA的公鑰
(a) 驗證證書來源的合法性;用CA的公鑰解密證書上數(shù)字簽名
(b) 驗證證書的內(nèi)容的合法性:完整性驗證
(c) 檢查證書的有效期限
(d) 檢查證書是否被吊銷
(e) 證書中擁有者的名字,與訪問的目標主機要一致
(4) 客戶端生成臨時會話密鑰(對稱密鑰),并使用服務(wù)器端的公鑰加密此數(shù)據(jù)發(fā)送給服務(wù)器,完成密鑰交換
(5) 服務(wù)用此密鑰加密用戶請求的資源,響應(yīng)給客戶端

注意:SSL是基于IP地址實現(xiàn),單IP的主機僅可以使用一個https虛擬主機

實現(xiàn)過程如下:

需要四臺主機,a是客戶端,b是web服務(wù)器,c是dns服務(wù)器,d是提供CA的主機
1、在b上創(chuàng)建一個虛擬主機www.a.com
2、在c上搭建dns服務(wù)器,用于解析www.a.com這個域名,如果不搭建dns也可以用本機的hosts文件,windows中的hosts文件在c:\Windows\System32\drivers\etc\hosts
3、在d上搭建CA
cd /etc/pki/CA     ---進入CA的主目錄
(umask 066;openssl genrsa -out private/cakey.pem 4096)  ---生成私鑰
openssl req -new -x509 -key private/cakey.pem -out cacert.pem -days 3650   ---生成CA自簽名證書
openssl x509 -in cacert.pem -nonot -text   ---查看證書
touch index.txt   ---創(chuàng)建數(shù)據(jù)庫文件
echo 01 >serial  ---創(chuàng)建證書編號文件
3、在b服務(wù)器端發(fā)起證書請求
mkdir /etc/httpd/conf.d/ca   ---創(chuàng)建一個目錄專門存放證書的相關(guān)文件
cd /etc/httpd/conf.d/ca
(umask 066;openssl genrsa -out httpd.key 1024)  ---生成私鑰
openssl req -new -key httpd.key -out httpd.csr   ---生成證書簽名請求文件,這個過程中要填入www.a.com這個主機名,也就是這個證書將來是給這個web網(wǎng)站使用的。
scp httpd.csr 172.18.21.107:/etc/pki/CA
3、在d上頒發(fā)證書
openssl ca -in httpd.csr -out httpd.crt -days 365
scp certs/httpd.crt 172.18.21.106:/etc/httpd/conf.d/ca  ---將web網(wǎng)頁的證書文件和CA自簽名的證書文件都傳給服務(wù)器端
scp cacert.pem 172.18.21.106:/etc/httpd/conf.d/ca
[root@centos6 ca]#ls  ---在b上查看有這些證書文件
cacert.pem  httpd.crt  httpd.csr  httpd.key
4、在b上安裝mod_ssl軟件包
yum install mod_ssl    ---這個軟件包是提供https服務(wù)用的
rpm -ql mod_ssl
5、在b上修改https的配置文件
vim /etc/httpd/conf.d/ssl.conf
DocumentRoot "/app/website1"   ---指明https的主目錄,這個目錄和http服務(wù)的主目錄可以不相同,但一般情況下應(yīng)該是相同的,不能客戶通過http和https訪問同樣的站點里面的內(nèi)容不一樣
SSLCertificateFile /etc/httpd/conf.d/ca/httpd.crt   ---指明證書文件的路徑
SSLCertificateKeyFile /etc/httpd/conf.d/ca/httpd.key   ---指明私鑰文件路徑
SSLCACertificateFile /etc/httpd/conf.d/ca/cacert.pem    ---指明CA自簽名證書文件路徑
service httpd restart
6、測試
將windows機器上的dns指向c的dns服務(wù)器地址,并將a上的dns也改成c的nds服務(wù)器地址
①網(wǎng)頁上測試
打開網(wǎng)頁https://www.a.com/會提示證書不受信任,只要將CA自簽名的證書安裝成受信任的證書機構(gòu)即可,注意只需要安裝根證書就可以。
②a上測試
[root@centos6 html]#curl -k https://www.a.com---linux中字符界面下也可以測試,-k表示忽略證書進行ssl連接
[root@centos6 app]#ls /app
cacert.pem  CentOS-6.9-x86_64.cfg  centos6_boot.iso  f1.log  head
[root@centos6 app]#curl --cacert cacert.pem    https://www.a.com/   ---也可以用這個命令,但要將b上的CA證書文件傳到a上才可以
/app/website1/index.html
[root@centos6 app]#openssl s_client -connect www.a.com:443
GET / http/1.1  ---指明方法和協(xié)議
host: www.a.com    ---注意輸完這個命令后要輸入兩次回車才能完成命令,可以顯示響應(yīng)報文的頭部信息和要頁面內(nèi)容

9、http重定向https

將http請求轉(zhuǎn)發(fā)至https的URL
重定向
Redirect [status] URL-path URL
status狀態(tài)分為兩種:
Permanent(永久重定向):Returnsa permanent redirect status (301) indicating that the resource has moved permanently
Temp(臨時重定向):Returnsa temporary redirect status (302). This is the default
示例:

1、創(chuàng)建配置文件
vim /etc/httpd/conf.d/test2.conf
redirect temp / https://www.a.com/   ---表示訪問http主目錄就臨時重定向跳轉(zhuǎn)至https://www.a.com/
2、測試
①網(wǎng)頁端測試
訪問http://www.a.com/ 會跳轉(zhuǎn)至https://www.a.com/
②linux端測試
[root@centos6 app]#curl -I http://www.a.com 
HTTP/1.1 302 Found   ---302表明是臨時重定向
Date: Fri, 29 Sep 2017 06:36:33 GMT
Server: Apache
Location: https://www.a.com/  ---重定向到https
Connection: close
Content-Type: text/html; charset=iso-8859-1

10、HSTS

HSTS:HTTP Strict Transport Security
服務(wù)器端配置支持HSTS后,會在給瀏覽器返回的HTTP首部中攜帶HSTS字段。瀏覽器獲取到該信息后,會將所有HTTP訪問請求在內(nèi)部做307跳轉(zhuǎn)到HTTPS,而無需任何網(wǎng)絡(luò)過程

無標題.png

支持HSTS后只需要兩步就實現(xiàn)跳轉(zhuǎn),而且只有第一次跑到服務(wù)器端進行跳轉(zhuǎn),下一次訪問就直接在瀏覽器端就進行跳轉(zhuǎn)了,瀏覽器已經(jīng)記住了這個網(wǎng)站的服務(wù)器支持HSTS,這樣既提高了效率又比較安全
HSTS preload list
是Chrome瀏覽器中的HSTS預(yù)載入列表,在該列表中的網(wǎng)站,使用Chrome瀏覽器訪問時,會自動轉(zhuǎn)換成HTTPS。Firefox、Safari、Edge瀏覽器也會采用這個列表,也就是解決了上面的第一次跑到服務(wù)器端進行跳轉(zhuǎn)的問題,直接在瀏覽器端就進行了跳轉(zhuǎn),更安全,不過這個是瀏覽器自己設(shè)置的功能。
實驗

1、修改配置文件
vim test2.conf
redirect temp / https://www.a.com/
Header always set Strict-Transport-Security "max-age=15768000"
RewriteEngine on
RewriteRule ^(/.*)$ https://%{HTTP_HOST}$1 [redirect=302]
2、測試
在網(wǎng)頁端進行測試的時候看不出來,只有在字符界面下會出現(xiàn)多一行內(nèi)容,表示支持HSTS
[root@centos6 app]#curl -I http://www.a.com
HTTP/1.1 302 Found
Date: Fri, 29 Sep 2017 06:53:19 GMT
Server: Apache
Strict-Transport-Security: max-age=15768000   ---這一行就表示支持HSTS,一般的服務(wù)器都會增加HSTS功能,因為比較安全
Location: https://www.a.com/
Connection: close
Content-Type: text/html; charset=iso-8859-1

11、httpd自帶的工具程序和壓力測試工具

  • httpd自帶的工具程序
    htpasswd:basic認證基于文件實現(xiàn)時,用到的賬號密碼文件生成工具
    apachectl:httpd自帶的服務(wù)控制腳本,支持start和stop
    apxs:httpd-devel包提供,擴展httpd使用第三方模塊工具
    rotatelogs:日志滾動工具
    access.log -->
    access.log, access.1.log -->
    access.log, acccess.1.log, access.2.log
    suexec:訪問某些有特殊權(quán)限配置的資源時,臨時切換至指定用戶身份運行
  • httpd的壓力測試工具
    ab [OPTIONS] URL
    來自httpd-tools包
    -n:總請求數(shù)
    -c:模擬的并行數(shù)
    -k:以持久連接模式測試
    ulimit–n # 調(diào)整能打開的文件數(shù)
[root@centos6 app]#ab -c 100 -n 1000 http://www.a.com/  ---注意com后面要加/,不然識別不了,表示一次并行執(zhí)行100個請求,一共執(zhí)行1000個請求
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容