第一部分 HTTP服務應用詳解html
1、HTTP協議簡介
linux
HTTP協議(HyperText Transfer Protocol,超文本傳輸協議)是用於從Web服務器傳輸超文本到本地瀏覽器的傳送協議。它可使瀏覽器更加高效,使網絡傳輸減小。它不只保證計算機正確快速地傳輸超文本文檔,還肯定傳輸文檔中的哪一部分,以及哪部份內容首先顯示(如文本先於圖形)等。瀏覽器
HTTP是一個應用層協議,由請求和響應構成,是一個標準的客戶端服務器模型。HTTP是一個無狀態的協議。所以HTTP事務是由一個請求以及與其對應的響應報文組合起來的。緩存
HTTP協議的主要特色:安全
一、支持客戶/服務器模式。bash
二、簡單快速:客戶向服務器請求服務時,只需傳送請求方法和路徑。服務器
三、靈活:HTTP容許傳輸任意類型的數據對象。cookie
四、無鏈接:無鏈接的含義是限制每次鏈接只處理一個請求。網絡
五、無狀態:HTTP協議是無狀態協議。無狀態是指協議對於事務處理沒有記憶能力。ide
2、HTTP服務的請求方法
GET:客戶端從服務器獲取資源,客戶端發出的爲完整的請求。
PUT:客戶端向指定資源位置上傳其最新內容。
DELETE:請求服務器刪除Request-URI所標識的資源。
HEAD:客戶端僅請求響應首部,則服務器只返回響應的首部。
POST:向指定資源提交數據進行處理請求,如提交表單。
OPTIONS:返回服務器針對特定資源所支持的HTTP請求方法。
TRACE:追蹤一個資源請求中間所通過的代理。
3、HTTP協議的報文格式
一、起始行
二、首部:Host
三、主體
請求報文格式:Request
<method> <request-URL> <version> #請求方法 請求資源路徑 所使用HTTP協議版本 <headers> #標題、頭文件 <entity-boday> #實體主題
響應報文格式:Response
<version> <status> <reason-phrase> #版本 狀態碼 緣由管理 <headers> #標題、頭文件 <entity-boday> #實體主題
4、HTTP的報文首部
一、通用首部:請求和相應都可使用
# connection 指定鏈接 # date 報文建立時間 # via 所通過的代理服務器
二、請求首部:只能用於請求
# Host 所請求的主機 # Referer 提供的包含當前請求URI文檔的URL # Accept 接受的MIME類型 # Accept-Charset 接受的字符集 # Accept-Encoding 接受的編碼 # Accept-Lanague 告訴服務器可以發送哪些語言
①條件請求首部
If-Modified-since 控制緩存
If-none-match
②安全請求首部
Authorization 客戶端提供給服務器的認證信息
cookie(cookie2) 追蹤用戶鏈接
三、響應首部
# Age 響應時間 # Pulic 可存於公共緩存 # Server 服務器軟件的名稱及版本 # Vary 響應變化,會影響緩存 # Set-cookie(cookie2) 設定cookie
四、實體首部
# Allow 容許的請求方法 # Location 資源的實際位置 # Content_Lanague 主體內容的語言 # Content_Location 主體內容所處的位置 # Content_Type MIME 主體內容類型 # Etag 實體標記 # Expires 過時緩存 # Last-Mofified 上次修改時間
5、HTTP事務流程
① 創建鏈接
② 接受請求
③ 處理請求
④ 獲取資源
⑤ 構建響應
⑥ 回送響應
⑦ 記錄日誌
第二部分 HTTP的相關配置
1、httpd軟件的相關信息
一、服務腳本:/etc/rc.d/init.d/httpd
二、運行記錄: /etc/httpd
三、配置文件
Ⅰ 主配置文件:/etc/httpd/conf/httpd.conf
Ⅱ 擴展配置文件:/etc/httpd/conf.d/*.conf
四、網頁文件目錄(DocumentRoot): /var/www/html
五、默認主頁面:index.html
2、配置httpd的工做屬性
一、指令不區分字符大小寫,但通常狀況下,單詞的首字母大寫;指令的值要區分大小寫;有些指令能夠重複使用屢次。
二、配置文件的構成
Ⅰ 主服務器不能和虛擬主機同時啓用
Ⅱ 全局配置:對主服務器或虛擬機都有效,且有些功能是服務器自身的工做屬性
Ⅲ 主服務器:主站的屬性
Ⅳ 虛擬主機:虛擬主機及其屬性定義
三、配置文件的語法測試
# service httpd configtest # httpd -t
大多數配置修改後,使用 service httpd reload 既能生效,而修改過監聽的地址或端口的文件一般須要重啓服務 service httpd restart 。
四、配置監聽的端口和地址
# Listen [ IP: ] PORTsan
3、配置所選的MPM(多道處理模塊)
一、prefork: 一個進程響應一個請求,linux中默認使用
Ⅰ 綁定特權端口
Ⅱ 派發和回收子進程
Ⅲ 讀取並分析主配置文件
二、worker: 一個進程生成多個線程,一個線程響應一個請求
三、event: 測試模式 (勿使用)
四、配置使用編譯進不一樣的MPM的httpd 編輯配置文件 /etc/sysconfig/httpd
五、配置加載的模塊
# LoadModule foo_module modules/mod_foo.sosui
4、配置服務器支持 keep-alived
# KeepAlive {on|off} on 空閒時使用,off 繁忙時使用 # KeepAlive TimeOut 最多容許鏈接時間 # MaxKeepAliveRequests 每次最大的資源請求次數
1)KeepAlive {on|off}
2)KeepAlive TimeOut
3)MaxKeepAliveRequests
5、配置站點的根目錄
一、DocumentRoot ""
<Directory "FS_PATH">
</Directory>
# DocumentRoot " " 指定配置網頁文件目錄路徑 # <Directory FileSystem_PATH> # </Directory >
Userdir:讓每一個人都擁有我的站點:http://HOST/~username
UserDir Public_html
訪問文件的配置文件及訪問結果
二、<Location "URL">
</Location>
6、配置頁面文件訪問屬性
# <Directory "FS_PATH"> # Options # Indexes 是否容許索引頁面文件,建議關閉 # FollowSymLinks 是否容許跟隨軟鏈接 # ExecCGI 是否容許執行CGI腳本 # All # None
7、配置日誌功能
一、日誌有兩類:訪問日誌和錯誤日誌,而訪問日誌的格式須要自定義
二、錯誤日誌
# ErrorLog "/path/to/error_log_file"
三、訪問日誌
# CustomLog /path/to/Custom_Log_File LOGTORMAT
8、配置訪問控制
一、基於客戶端(IP)的訪問控制
order:定義allow和deny哪個爲默認法則,寫在後面的爲默認法則,寫在前面的指令沒有顯示定義的即受後面的指令控制。
# Order allow,deny # Allow from All
二、基於用戶的訪問控制
# DocumentRoot " " # <Directory "/path/to/DocumentRoot_SUBDIR"> # Options None # AllowOverride 是否容許覆蓋 # AuthName "Realm" 用戶名稱 # AuthType Basic 認證類型 # AuthUserFile /path/to/passwords 用戶帳號文件 # Require username 本帳號容許登陸的用戶 # AuthGroupFile 用戶組文件 # Require grpname 本帳號容許登陸的用戶組 # </Directory>
9、配置虛擬主機
一、虛擬主機的類型
Ⅰ 基於端口的虛擬主機
Ⅱ 基於IP的虛擬主機
Ⅲ 基於主機名的虛擬主機
二、每一個虛擬主機的定義
# <VirtualHost IP:PORT> 指定虛擬主機的IP、端口 # ServerName 指定虛擬主機的主機名 # DocumenRoot " " 指定虛擬主機的站點路徑 # </VirtualHost>
三、每一個虛擬主機的單獨配置
<VirtualHost IP:80> ServerName Document " " CustomLog ErrorLog <Directory ""> Options None AllowOverride Authconfig AuthName " " AuthType Basic Require Vaild-user </Directory> ScriptAlias /cgi-bin/ Alias </VirtualHost>