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 17:57
下一篇 2016-12-22 20:14

相關推薦

  • Linux常用命令

    一、Linux常用命令(總) 二、Linux常用命令(分) 1、pwd – print name of current/working directory 2、cd – change directory 3、ls – list,dieplay directory content 4、date – pr…

    Linux干貨 2016-09-19
  • redis

    redis 簡述 redis的數據結構 redis的數據持久化實現 程序與配置文件 redis-cli命令 主從復制原理與架構實現 redis的高可用方案 – sentinel redis分布式系統概述與簡介 簡述 什么是redis? redis是一個基于nosql技術的kv數據庫,支持非常大的并發場景,與memcached不同的是,redis擁…

    Linux干貨 2016-08-19
  • 文件處理工具

    Linux的哲學思想之一是一切皆文件,所有系統中有許多文本文件。因此Linux有許多關于文本處理的命令。 cat命令 連接文件并打印到標準輸出設備上,cat經常用來顯示文件內容。 語法 cat [OPTION]… [FILE]… 常用選項 -A, –show-all #顯示所有控制符 -b, –num…

    Linux干貨 2016-08-08
  • 關于Raid的各種類型特點概要

    關于Raid需要了解掌握的要點

    Linux干貨 2017-11-26
  • Linux文件查找的使用方法

    文件查找的方法 locate命令       非實時查找(數據庫查找): locate查詢系統上預建的文件索引數據庫 /var/lib/mlocate/mlocate.db    依賴于事先構建的索引;索引的構建是在系統較為空閑時自動進行(周期性任務);管理員手動更新數據庫(updated…

    Linux干貨 2016-08-15
  • 關于大型網站技術演進的思考(十)–網站靜態化處理—動靜整合方案(2)

    原文出處: 夏天的森林    上篇文章我簡要的介紹了下網站靜態化的演進過程,有朋友可能認為這些知識有點過于稀松平常了,而且網站靜態化的技術基點也不是那么高深和難以理解,因此它和時下日新月異的web前端技術相比,就顯得不倫不類了。其實當我打算寫本系列的之前我個人覺得web前端有一個點是很多人都知道重要,但是有常常低估它作用的,那就…

    2015-03-11

評論列表(1條)

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

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

欧美性久久久久