1. 程式人生 > 實用技巧 >HTTP協議及Apache配置解析

HTTP協議及Apache配置解析

一、http協議簡介

1.httpHyperTextTransferProtocal超文字傳輸協議(應用層協議)是網際網路上應用最為廣泛的一種網路協議。設計HTTP最初的目的是為了提供一種釋出和接收HTML頁面的方法。目前普遍使用的HTTP協議的版本是HTTP/1.1

2.HTTP/1.1協議中共定義了八種方法(動作)來以不同方式操作指定的源:

<1>OPTIONS:這個方法可使伺服器傳回該資源所支援的所有HTTP請求方法。用'*'來代替資源名稱,向Web伺服器傳送OPTIONS請求,可以測試伺服器功能是否正常運作。

<2>HEAD:GET方法一樣,都是向伺服器發出指定資源的請求。只不過伺服器將不傳回資源的本文部份。它的好處在於,使用這個方法可以在不必傳輸全部內容的情況下,就可以獲取其中“關於該資源的資訊”

(元資訊或稱元資料)

<3>GET:向指定的資源發出“顯示”請求。使用GET方法應該只用在讀取資料,而不應當被用於產生“副作用”的操作中,例如在WebApplication中。其中一個原因是GET可能會被網路蜘蛛等隨意訪問。參見安全方法

<4>POST:向指定資源提交資料,請求伺服器進行處理(例如提交表單或者上傳檔案)。資料被包含在請求本文中。這個請求可能會建立新的資源或修改現有資源,或二者皆有。

<5>PUT:向指定資源位置上傳其最新內容。

<6>DELETE:請求伺服器刪除Request-URI所標識的資源。

<7>TRACE:回顯伺服器收到的請求,主要用於測試或診斷。跟蹤一次請求中間所經過的代理伺服器。

<8>CONNECT:HTTP/1.1協議中預留給能夠將連線改為管道方式的代理伺服器。通常用於SSL加密伺服器的連結(經由非加密的HTTP代理伺服器)

3.HTTP/1.1特點

持久連線被預設採用,並能很好地配合代理伺服器工作。還支援以管道方式在同時傳送多個請求,以便降低線路負載,提高傳輸速度。HTTP/1.1相較於HTTP/1.0協議的區別主要體現在:

<1>快取處理

<2>頻寬優化及網路連線的使用

<3>錯誤通知的管理

<4>訊息在網路中的傳送

<5>網際網路地址的維護

<6>安全性及完整性

4.HTTP響應碼

<1>1xx

訊息——請求已被伺服器接收,繼續處理

<2>2xx成功——請求已成功被伺服器接收、理解、並接受

<3>3xx重定向——需要後續操作才能完成這一請求

301:永久重定向;302:臨時重定向;304:NotModified

<4>4xx請求錯誤——請求含有詞法錯誤或者無法被執行

404:NotFound

<5>5xx伺服器錯誤——伺服器在處理某個正確請求時發生錯誤

502:閘道器錯誤;503:服務不可用;504:閘道器超時

二、httpd安裝與工作屬性配置

1.Linux下常用的WEB伺服器軟體有:ApacheNginxTomcatLighttpdApache伺服器其靠執行和處理方面的穩定性,可靠而優越的效能,成為WEB伺服器領域中佼佼者。

2.工作屬性配置細節

Apache配置中的指令不區分字元大小寫,但一般習慣單詞的首字母大寫;指令的值區分大小寫;指令和值之間用空格隔開;有些指令可以重複使用多次。

配置檔案有三部分組成:

<1>全域性配置:對主伺服器和虛擬主機都有效,且有些功能是伺服器自身工作屬性。

<2>主伺服器:主站屬性

<3>虛擬主機:虛擬主機及屬性定義。

注:第二段和第三段不能同時使用。

配置檔案語法測試:

<1>servicehttpdconfigtest

<2>httpd–t

注:大多數配置修改後,使用servicehttpdreload即可生效,但埠及地址修改後需要重啟服務。

3.Apache工作屬性配置

<1>配置監聽的地址和埠

修改主配置檔案/etc/httpd/conf/httpd.conf

Listen[IP:]PORTIP省略表示監控當前主機上的所有IP

<2>配置所選用的MPM屬性

MPM:多道處理模組。

http–l檢視直接編譯進MPM的模組

Prefork:一個程序響應一個請求。

主程序功能

<1>繫結特權埠

<2>派發或回收子程序

<3>讀取分析配置檔案

<4>監聽每個各戶請求,併為每個客戶派發子程序。

<IfModuleprefork.c>//如果模組存在則執行

StartServers8//開啟時生成的程序

MinSpareServers5//最少空閒程序

MaxSpareServers20//最多空閒程序

ServerLimit256//

MaxClients256//允許客戶端連線的最大值

MaxRequestsPerChild4000//伺服器端的一個程序處理的最多請求

</IfModule>

Worker:一個程序生成多個執行緒,一個執行緒響應一個請求。

如果想要啟用此模組需要修改配置檔案/etc/sysconfig/httpd

<3>.配置伺服器支援Keep-Alive(持久連線)

KeepAlive{On|Off}

KeepAliveTimeout15:連線超時時間(預設15秒);Apache2.4可以精確到毫秒。

MaxkeepAliveRequests100:一次連線之內最多請求的資源

<4>配置載入的模組

LoadModulefoo_modulemodules/mod_foo.so

<5>配置頁面檔案訪問屬性

<Directory“FS_PATH”>//htaccess:分散式配置,此處理解為容器

Options

Indexes:是否允許索引頁面檔案,強烈建議關閉(除非提供的是一個下載站點)

Followsynlinks:是否跟隨軟連線檔案

ExecCGI:是否允許執行CGI指令碼,不建議開啟

</Directory>

<6>基於客戶端的訪問控制

105910667.png

105959426.png

110035469.png

<7>路徑別名;指令碼路徑別名

裝載CGI模組

CGI:協議

Options後加上ExecCGI

ScriptAlias/PATH/TO/SOMEDIR

cat<<EOF

Content-Type:text/html

<pre>

</pre>

EOF

<8>基於使用者的訪問控制

DocumentRoot“”

<Directory“PATH/TO/DocumentRoot_SUBDIR”>

OptionsNone

AllowOverrideAuthConfig//是否允許覆蓋

AuthName”Realm”//認證名稱,任意字串(主要為解釋)

AuthTypeBasic//認證型別,一般選用Basic

AuthUserFile/path/to/passwords//使用者密碼檔案

RequireUSER//指定可登入使用者valid-user:所有使用者

</Directory>

密碼檔案的建立:

Htpasswd–c(建立一個新檔案,首次建立時使用)–m(MD5加密)|-s(RSA加密)FLIE(檔案儲存位置)USERNAME

<9>虛擬主機(使用虛擬主機需要關閉主伺服器)

<VirtualHostIP:PORT>

ServerName“”

DocumentRoot“”

</VirtualHost>

(1)基於埠的虛擬主機(不常用,一般用於內部:註釋掉主伺服器DocumentRoot)

(2)基於IP的虛擬主機(不常用)

(3)基於主機名的虛擬主機

104933846.png

105046387.png

105123356.png

105306993.png

105330228.png

<10>.httpdstatus(狀態資訊輸出介面)

LoadModulestatus_modulesmodules/mod_status.so//確保此模組裝載

<Location/status>//必要時開啟,預設關閉,開啟此模組會影響伺服器效能

SetHandlerserver-status//啟用一個處理器

//

控制訪問法則

//

</Location>

ExtendedSatus{On|Off}//是否為status開啟更多資訊(不建議開啟)

三、HTTPS配置完全解析

https(http+SSL)(http+TLS)

SSL/TLS會話的建立僅能基於IP地址進行

監聽埠:443/TCP

要實現https協議必須安裝mod_ssl模組

yuminstallmod_ssl(裝載模組不做演示)

實現https前提:給http服務提供私鑰檔案和證書檔案

生成私鑰證書申請自建CA

編輯配置檔案vim/etc/httpd/conf.d/ssl.conf

1.自建CA

<1>生成私鑰cd/etc/pki/CA

223337871.png

<2>自簽證書

223436967.png

<3>搭建ftp伺服器將證書以.crt為字尾的檔案掛至ftp的pub目錄下,供客戶端下載。

223757446.png

2.申請證書

<1>切換至cd/etc/httpd/conf/生成一個私鑰

101407411.png

<2>發出一個證書請求(注意資訊一致)

101648646.png

3.生成一個證書,檢視證書資訊。

101837839.png

4.修改配置檔案vim/etc/httd/conf.d/ssl.conf開啟配置檔案,修改以下資料

監聽埠修改為443

102605499.png

新增虛擬主機

102815601.png

指定DocumentRoot和ServerName

103019190.png

開啟ssl功能

103234351.png

指定證書檔案位置

103428567.png

指定私鑰檔案位置

103500768.png

從ftp伺服器上下載證書,安裝證書

103609783.png

證書匯入

103712540.png

測試訪問站點

103846569.png

新增安全例外

104251556.png

訪問成功

104508143.png

轉載於:https://blog.51cto.com/dreamwolf/1281161