HTTP協議及Apache配置解析
一、http協議簡介
1.http:HyperTextTransferProtocal超文字傳輸協議(應用層協議)是網際網路上應用最為廣泛的一種網路協議。設計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伺服器軟體有:Apache、Nginx、Tomcat、Lighttpd。Apache伺服器其靠執行和處理方面的穩定性,可靠而優越的效能,成為WEB伺服器領域中佼佼者。
2.工作屬性配置細節
Apache配置中的指令不區分字元大小寫,但一般習慣單詞的首字母大寫;指令的值區分大小寫;指令和值之間用空格隔開;有些指令可以重複使用多次。
配置檔案有三部分組成:
<1>全域性配置:對主伺服器和虛擬主機都有效,且有些功能是伺服器自身工作屬性。
<2>主伺服器:主站屬性
<3>虛擬主機:虛擬主機及屬性定義。
注:第二段和第三段不能同時使用。
配置檔案語法測試:
<1>servicehttpdconfigtest
<2>httpd–t
注:大多數配置修改後,使用servicehttpdreload即可生效,但埠及地址修改後需要重啟服務。
3.Apache工作屬性配置
<1>配置監聽的地址和埠
修改主配置檔案/etc/httpd/conf/httpd.conf
Listen[IP:]PORT;IP省略表示監控當前主機上的所有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>基於客戶端的訪問控制
<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)基於主機名的虛擬主機
<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
<2>自簽證書
<3>搭建ftp伺服器將證書以.crt為字尾的檔案掛至ftp的pub目錄下,供客戶端下載。
2.申請證書
<1>切換至cd/etc/httpd/conf/生成一個私鑰
<2>發出一個證書請求(注意資訊一致)
3.生成一個證書,檢視證書資訊。
4.修改配置檔案vim/etc/httd/conf.d/ssl.conf開啟配置檔案,修改以下資料
監聽埠修改為443
新增虛擬主機
指定DocumentRoot和ServerName
開啟ssl功能
指定證書檔案位置
指定私鑰檔案位置
從ftp伺服器上下載證書,安裝證書
證書匯入
測試訪問站點
新增安全例外
訪問成功
轉載於:https://blog.51cto.com/dreamwolf/1281161