httpd的介紹以及常用配置

繼上一篇寫了LAMP的編譯安裝之后沒有介紹如何配置使用,接下來的幾篇會依次介紹,編譯安裝的過程為http://www.www58058.com/64006

一.httpd介紹

1.httpd是http協議的一個經典實現,也是apache組織中的一個頂級項目,其官方站點為httpd.apache.org。

2.httpd的運行機制

高度模塊化(Core+Modules):采用核心模塊+擴展模塊的機制
DSO(Dynamic Shared Object)機制:可以按需動態的裝載模塊來實現相應的功能

采用MPM(Multipath Processing Moules):使用多路處理模塊,有三種工作模型

 (1)prefork模型:多進程模型,一個主進程負責管理子進程,創建套接字,接受用戶請求,并將請求分發給子進程,由子進程具體負責處理用戶請求,工作方式為,事先生成幾個空閑的進程,隨時等待著處理用戶請求。

 (2)worker模型:多進程,多線程模型,一個主進程負責管理子進程,創建套接字,接受用戶請求,并將用戶請求分發給每個子進程,而每個子進程又生成多個線程,每個線程負責具體的處理用戶請求。

 (3)event:事件驅動,多進程模型,一個主進程負責管理子進程,創建套接字,接受用戶請求,并將用戶請求交給子進程,每個子進程基于事件驅動處理多個請求,并將結果返回給客戶端。

3.httpd有豐富的功能特性,常用的有:

支持CGI(Common Gataway Interface)協議
支持虛擬主機:可以基于ip,port,FQDN實現虛擬主機
支持反向代理機制
支持負載均衡功能
具有豐富的認證機制
支持第三方模塊
支持路徑別名

二.關于httpd的配置文件

  1. httpd的主配置文件分為三部分,分別是:

Global Environment:全局配置段,主要定義與httpd工作特性相關的配置
Main Server Configuration:中心主機配置段,主要用于定義中心主機的配置,httpd默認開啟中心主機
Virtual Host:虛擬主機配置段,分別定義不同的虛擬主機相關的配置

同時,在httpd配置文件的conf.d目錄下所有以.conf結尾的文件也是其配置文件,要實現不同功能,可以在不同位置的配置文件中進行定義。

三.httpd常用的配置

1.在httpd中實現虛擬主機

所謂的虛擬主機是指在通過在配置文件中提供不同的配置,從而可以實現在同一臺物理服務器上提供多個站點的訪問路徑,實現方式有三種,分別是:

IP地址相同,監聽的端口不同,通過不同的端口號來訪問
IP地址不同,端口可以相同,通過不同的IP來訪問
主機名不同,端口號和IP地址可以相同,通過不同的主機名稱來訪問。

使用虛擬主機的前提是關閉中心主機功能,即將主配置文件中的DocumentRoot這一指令注釋。

(1)基于不同端口號來實現的虛擬主機:

a.配置虛擬主機的名稱和和根文檔目錄,但不常用,因為客戶端來訪問時候不知道服務器端監聽的端口號

配置1.png

b.打開監聽的端口號

端口號.png

c.測試結果

結果.png

(2)基于不同的IP地址來訪問,可以通過在物理服務器上安裝多塊網卡來實現

配置3.png

(3)基于不同的主機名稱來實現虛擬主機

a.修改主配置文件

配置4.png

b.修改/etc/hosts文件,在其中加入主機名與IP地址的對應關系

配置7.png

c.測試結果

結果3.png

2.持久和非持久連接

 當客戶端與服務器端進行長時間的通信時,客戶端會發出一系列的請求,服務器端要這些請求一一進行響應,而http協議基于tcp協議建立連接,于是對這一系列的請求和響應可以每次經過一個單獨的tcp連接發送,也可以都經過同一個tcp連接進行發送;每次(每個資源的傳輸)都使用不同的tcp進行發送的方式就叫做非持久連接,每次都經過同一個tcp連接發送的方式叫做持久連接。在httpd中實現持久功能:

KeepAlive {on|off}:開啟或關閉持久連接功能

MaxKeepAliveRequests 100 :允許建立持久連接的最大客戶端請求數量

KeepAliveTimeout 15 :每個連接的最大持久連接時長

3.監聽的端口號

Listen 80

4.加載模塊:

LoadModule Module_name

5.中心主機的根文檔,而httpd默認就是運行于中心主機

DocumentRoot "/web/app/host1"

6.定義默認的主頁

DirectoryIndex index.html index.html.var

7.定義錯誤日志的存放位置

ErrorLog logs/error_log

8.定義錯誤日志的等級

LogLevel {debug|info|notice|warn|error|crit|alert|emerg}

9.定義日志的格式,可以根據需要自行定義,需要了解每個宏的意思,當使用ELK做日志分析時能便于定義輸出格式

LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined

有很多宏定義,可以參考官方文檔。

10.基于路徑做訪問控制

(1)基于物理服務器的文件系統做訪問路徑做控制

<Directory "/var/www/html">

   Options {Indexes FollowSymLinks}

    AllowOverride None 

    Order allow,deny

    Allow from all

</Directory>

其中:

Options Indexes :如果訪問路徑中不存在資源時,將所有的資源列出來

Options FollowSymLinks:當站點上的資源是符號連接文件時,客戶端是否能訪問到其所鏈接指向的文件

AllowOverride None:是否允許在每個頁面下建立.htaccess的文件來做訪問

Order allow,deny:定義訪問控制的機制,若先allow,后deny的話即為黑名單機制,反之則為白名單機制

Allow from all :定義允許訪問的客戶端

配置示例:基于白名單機制,拒絕192.168.88網絡的主機,只允許192.168.88.132訪問。

4.png

測試結果:使用192.168.88.150訪問

2.png

使用192.168.88.132訪問

3.png

(2)基于URL做訪問控制

<Location /server-status>

   SetHandler server-status

   Order deny,allow

   Deny from all

   Allow from .example.com

</Location>

11.設定默認字符集

AddDefaultCharset UTF-8

12.基于用戶做頁面訪問控制

基于用戶對指定頁面做訪問控制的方式有兩種:基本認證和摘要認證

基本認證是:服務器端生成一個存有虛擬用戶名和密碼的文件,當用戶訪問時頁面時,就會彈出對話框要求輸入用戶名和密碼,此頁面的狀態碼為401,只有當用戶認證通過以后,才能訪問該頁面;而摘要認證則是服務器為每一連接生成一個唯一的隨機數, 客戶端對用這個隨機數做密碼進行MD5加密. 然后發送到服務器. 服務器端也用此隨機數對密碼加密, 然后和客戶端傳送過來的加密數據進行比較,結果相同則認證通過。

(1)例如對根路徑配下的auth頁面做認證basic認證,配置方式為:

a.在對應的頁面下創建認證文件,為了安全可以創建隱藏文件,也可以創建非隱藏文件

5.png

b.編輯httpd.conf配置文件

7.png

c.測試結果

6.png

13.開啟httpd的信息頁面,默認是不打開的,如果要打開,最好最做白名單的訪問控制

<Location /server-info>

      SetHandler server-info

      Order deny,allow

      Deny from all

      Allow from 192.168.88.1/24

     Allow from .example.com

</Location>

14.開啟服務器的狀態頁面

<Location /server-status>

     SetHandler server-status

     Order deny,allow

     Deny from all

     Allow from .example.com

     Allow from 192.168.88.1/24

</Location>

14.配置httpdMPM的工作特性

<IfModule prefork.c>

  StartServers      8    #啟動服務時啟動的進程數

  MinSpareServers    5    #最少空閑的進程數 

  MaxSpareServers   20     #最大空閑的進程數

  ServerLimit      256    #服務器允許打開的最大進程數

  MaxClients       256    #允許的最大用戶連接數

  MaxRequestsPerChild  4000  #每個子進程所能處理的最大用戶請求數量

</IfModule>

15.httpd實現https功能

ssl是web服務之間進行信息安全傳輸的協議,其通過建立ssl會話來實現信息的安全傳送,基于客戶端的ip地址建立會話,因此,每個客戶端IP只建立一個ssl會話,每個會話的建立要基于ssl握手來實現,類似于tcp的三次握手,ssl握手要完成交換協議版本號,協商雙方都支持的加密算法,以及實現身份認證等。而此時客戶端也要對服務器端的證書做檢驗,檢測證書的有效期,CA的可信度等,等雙方握手完成以后,才能基于加密的方式進行信息的交換。而實現的ssl協議的http協議就被稱為https,監聽于tcp的443端口。

實現https的步驟為:

(1)https的實現依賴于mod_ssl模塊

9.png

(2).創建CA服務器,CA服務器為192.168.88.1

a.生成CA服務器端私鑰文件

(umask 077;openssl genrsa -out /etc/pki/CA/private/cakey.pem)

b.創建自簽證書

openssl req -new -x509 -key /etc/pki/CA/private/cakey.pem -out /etc/pki/CA/cacert.pem

c.為CA提供必要的輔助文件

mkdir -pv /etc/pki/CA/{certs,crl,newcerts}

touch /etc/pki/CA/{serial,index.txt}

echo 01 > serial

(3)在客戶端創建私鑰文件以及生成簽署請求

a.生成私鑰文件

(umask 077;openssl genrsa -out /etc/httpd/ssl/httpd.key)

b.生成簽署請求

openssl req -new -key  /etc/httpd/ssl/httpd.key -out /etc/httpd/ssl/httpd.csr

(4)簽署    

a.將簽署請求發送到CA服務器上

scp /etc/httpd/ssl/httpd.crt root@192.168.88.134:/tmp

b.CA簽署請求

openssl ca -in /tmp/httpd.csr -out /etc/pki/CA/cert/httpd.crt

(5)編輯ssl.conf配置文件

https7.png

至此,對httpd已經能基本使用了。

原創文章,作者:zhangbao,如若轉載,請注明出處:http://www.www58058.com/64272

(0)
zhangbaozhangbao
上一篇 2016-12-22
下一篇 2016-12-22

相關推薦

  • 7月19號:計算機基礎+在VMware12中安裝CentOS6.8

        16號從正下暴雨的武漢來到帝都參加馬哥培訓班,從清河公寓亮哥開始,到宿舍另外五位室友,漸漸認識更多人,還算適應額不錯。但走在北京的馬路上,多少還是有些陌生,不過就如宿舍一樣,來的時候臟兮兮,經過一番打掃后,干凈了不少,我也會很快習慣在這邊的生活,精力全放在linux上!   &nb…

    Linux干貨 2016-08-05
  • HTTPD-相關的配置

    一次完整的HTTP請求處理過程: 1、建立連接:接收或拒絕鏈接請求 2、接受請求:接收客戶端請求報文中對某資源的一次請求的過程 Web訪問響應模型(Web I/O) 單進程I/O模型:啟動一個進程處理用戶請求,而且一次只處理一個,多個請 求被串行響應; 多進程I/O模型:并行啟動多個進程,每個進程響應一個鏈接請求; 復用I/O結構:啟動一個進程,同時響應N個…

    2017-08-29
  • 建立yum源及yum命令的使用

    一、什么是YUM     YUM的全稱為 Yellowdog Update Modifier,其主要目的是為了解決RPM包安裝時的依賴關系的問題。YUM只是一個用于軟件安裝的前端工具,其主要的服務對象還是RPM軟件包。     YUM采用C/S架構,即客戶端與服務器的?!?/p>

    Linux干貨 2015-05-11
  • N25期第一周作業

    計算機的組成與功能  一臺能正常工作的計算機有硬件和軟件組成,計算機的硬件就好比人的軀體,計算機的軟件就好比人的思想,人的思想控制指揮人的軀體,計算機有了軟件才能進行工作。 硬件大致由CPU,內存,輸入輸出設備,存儲設備組成,各個部件的主要作用流程是:由輸入設備(例如:鍵盤)輸入數據, 數據暫時出入內存, 而后由內存傳到CPU(CPU又由運算器+控…

    Linux干貨 2016-12-05
  • CentOS 7破解密碼教程

    啟動時任意鍵暫停啟動  按e鍵進入編輯模式  將光標移動linux16開始的行,添加內核參數rd.break  按ctrl-x啟動  mount –o remount,rw /sysroot  chroot /sysroot  passwd root  touch /.autorelabe…

    Linux干貨 2016-12-01
  • 第四周作業

    cp、grep、sueradd、chmod、vim命令的一些用法

    Linux干貨 2017-12-24

評論列表(1條)

  • 馬哥教育
    馬哥教育 2017-01-03 16:50

    理論和操作相結合且脈絡清晰,是一篇可以拿的出手的好文章。

欧美性久久久久