HTTP服務應用詳解及相關配置

 第一部分  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>
相關文章
相關標籤/搜索