httpd-2.4.6



1.基礎html


安裝:web

[root@tri manual]# yum install httpd-manual httpd


源碼編譯shell

configure配置選項
配置選項
默認值
備註
-prefix

服務器的根路徑
--with-mpm
event
event/worker/prefork/winnt
-enable-ssl



主程序/httpd:數據庫

httpd命令選項
選項
備註
-f /etc/httpd/conf/httpd.conf 指定配置文件
-v
查看版本
-l
編譯到服務器的模塊(不包括動態加載)
-M
查看靜態、共享模塊
-S
查看當前配置文件設置
-t
檢查配置文件語法
-V
httpd編譯參數




配置指令:
apache

httpd.conf
配置指令
備註
ServerRoot "/etc/httpd" 服務器的根路徑
TimeOut 120
TCP握手超時
KeepAlive off
HTTP持久鏈接
KeepAliveTimeout 5
持久鏈接超時(5秒)
MaxKeepAliveRequests 100
持久連接容許的請求數
ServerName www.tripartite.tech:8080
服務器主機名
DocumentRoot htdocs/
默認請求目錄
options Indexes FollowSymLinks

列出目錄、服務器接受符號連接瀏覽器

none:啥都不設置安全

Includes:服務器端包含bash

DirectoryIndex

AllowOverride

Order allow,deny

訪問控制服務器

Allow,Deny網絡

  任何符合Allow將放行,任何符合Deny將拒絕;均不符合,將拒絕。

Deny,Allow

  若是匹配Deny,請求拒絕,除非它也匹配Allow指令;均不符合,將放行。

Allow from all
訪問控制(網絡地址、ip地址、域名、域)
Deny from all


例子:

# 拒絕某個ip訪問
Order Allow,Deny
Allow from all
Deny from 115.120.85.152


2.用戶指南


2.1.配置文件

  Apahce HTTP服務的配置文件,是由一系列指令構成的純文本文件。主配置文件一般叫作「httpd.conf」,路徑在編譯時指定,可是啓動服務時能夠被選項「-f」覆蓋。還可使用「Include」指令,加載其餘配置文件。任何指令,能夠出如今配置文件的任何位置。配置文件修改後,只有在其後啓動服務才能生效。

  每一個指令單獨佔用配置文件的一行,使用反斜線「\」能夠把過長的一行配置拓展到下一行。拓展時,在反斜線後邊不能存在空白字符。指令的參數由空白字符分割,參數自身含有空白字符時,須要用到雙引號。配置文件中的指令不區分大小寫,可是指令的參數是大小寫敏感的。指令前的空白符是被忽略的,全部爲了方便查看,能夠進行縮進。

  配置文件接受變量的定義(Define),獲取變量的值時跟shell腳本中同樣($var)。使用Define定義的變量,會覆蓋shell的環境變量。

  在不啓動服務的狀況下,能夠經過命令判斷配置文件語法的正確性。能夠經過「f」選項在當前服務的配置文件外配置好配置文件並檢驗好後,在覆蓋默認配置文件。

[root@Rsync httpd2.2.8]# bin/httpd -t
Syntax OK
[root@Rsync httpd2.2.8]# bin/httpd -t -f /home/work/httpd.conf
Syntax OK


2.1.1.模塊編譯

模塊屬性
說明
MPM

多處理模塊

有且只能有一個該類模塊。響應客戶端的請求處理、調度。默認會自動編譯,rpm包中經常是動態加載的,而源碼包安裝時默認是靜態加載的。

Base
默認被編譯
Extension
默認不會被編譯,須要使用到該類模塊時,經常須要從新編譯。
Experimental
工具套件用到的模塊,表示當前版本再也不支持。
External
第三方提供的模塊,須要時應從新編譯。


  httpd是一個模塊化的服務。httpd的核心服務只包含最基本的功能,擴展功能須要更多的模塊來實現。當須要使用某個特殊的功能時,可能須要從新編譯源代碼來使用。不一樣的模塊大體分爲幾類:MPM、Base、Extension、Experimental、External。

  若是httpd服務被編譯爲使用動態加載模塊,則可使用指令「LoadModule」在任什麼時候候單獨加載(隨後編譯的)模塊。查看當前httpd服務編譯了哪些模塊,可使用選項「l」。查看哪些模塊被動態加載,可使用選項「M」。

[root@Rsync httpd2.2.8]# bin/httpd -M
Loaded Modules:
 core_module (static)
...
[root@Rsync httpd2.2.8]# bin/httpd -l
Compiled in modules:
  core.c
...


  更多關於編譯的信息,……(關於當前編譯信息、能夠用到的配合指令)

# 編譯時的配置信息:
[root@Rsync httpd2.2.8]# bin/httpd -V
Server version: Apache/2.2.8 (Unix)
Server built:   Aug 18 2017 09:59:05
Server's Module Magic Number: 20051115:11
Server loaded:  APR 1.2.12, APR-Util 1.2.12
Compiled using: APR 1.2.12, APR-Util 1.2.12
Architecture:   64-bit
Server MPM:     Prefork
  threaded:     no
    forked:     yes (variable process count)
Server compiled with....
 -D APACHE_MPM_DIR="server/mpm/prefork"

# 查看編譯後可使用到配置指令。
[root@Rsync httpd2.2.8]# bin/httpd -L
<Directory (core.c)
    Container for directives affecting resources located in the specified directories
    Allowed in *.conf only outside <Directory>, <Files> or <Location>
<Location (core.c)
    Container for directives affecting resources accessed through the specified URL paths
    Allowed in *.conf only outside <Directory>, <Files> or <Location>
<VirtualHost (core.c)
    Container to map directives to a particular virtual host, takes one or more host addresses
    Allowed in *.conf only outside <Directory>, <Files> or <Location>


2.1.2.指令範圍

  指令位於主配置文件,將做用於整個服務。當須要縮小指令的範圍時,能夠將其嵌入「Directory」、「DirectoryMatch」、「Files」、「FilesMatch」、「Location」、「LocationMatch」這些「配置塊中。這些指令容許嵌套,實現更加精細的管理。

  httpd能夠同時發佈多個不一樣站點,這個功能常被稱爲「虛擬主機」。其中的指令將限制做用在<VirtualHost>配置塊中,用來響應某個特定的站點。

  儘管大部分指令能夠位於配置文件的任意位置,可是,關於控制進程建立的指令僅能出如今主配置上下文中。


2.1.3.分佈式配置文件

  容許出如今目錄的任意子目錄中,用來針對目錄進行分散管理。其語法與主配置文件相同。因爲每一個請求接收的時候都會讀取該配置文件(.htaccess),因此在這些文件中所作的更改當即生效(無須重啓服務)。

  默認文件名爲「.htaccess」,能夠經過指令「AccessFileName」從新指定。

[root@tri httpd-2.4.6]# bin/httpd -L  | grep -A 2  "^Access"
AccessFileName (core.c)
    Name(s) of per-directory config files (default: .htaccess)
    Allowed in *.conf only outside <Directory>, <Files>, <Location>, or <If>


  因爲是個分佈式配置,可能會與主配置文件在某些時候相左,這時另一個指令「AllowOverride」就粉墨登場了。


2.2.綁定地址、端口

  httpd啓動的時候,默認監聽全部的本地地址。可是須要指定監聽某個肯定的端口,或者地址,端口和地址(用在設置虛擬機的時候)。Listen指令設定服務接收請求在某個地址、端口。

  同時監聽多個端口

Listen 80
Listen 8000

  監聽不一樣的地址

Listen 192.0.2.1:80
Listen 192.0.2.5:8000

  監聽IPv6地址,須要用到一對中括號。

Listen [::]:80


  Listen指令還有另一個選項,用來指定監聽的協議

Listen 192.170.2.1:8443 https


2.3.配置塊(塊容器)

  配置文件中的指令,能夠做用於整個服務。也能夠用來限定某個特定的目錄、文件、主機、URL。配置塊又叫作塊容器。


2.3.1.配置塊種類

  大體分爲兩類,僅僅在服務器啓動時產生效果的塊容器(封閉容器),和每次都會響應請求的塊容器(開放塊容器)。像以‘If’開頭的系列,<IfDefine>,<IfModule>,<IfVersion>若是符合特定條件就一次性響應。

[root@tri httpd-2.4.6]# bin/httpd -L  | grep -A 3  "^<If"
<IfModule (core.c)
    Container for directives based on existence of specified modules
    Allowed in *.conf anywhere and in .htaccess
    when AllowOverride isn't None
<IfDefine (core.c)
    Container for directives based on existence of command line defines
    Allowed in *.conf anywhere and in .htaccess
    when AllowOverride isn't None
--
<If (core.c)
    Container for directives to be conditionally applied
    Allowed in *.conf anywhere and in .htaccess
    when AllowOverride isn't None
--
<IfVersion (mod_version.c)
    a comparison operator, a version (and a delimiter)
    Allowed in *.conf anywhere [no per-dir config] and in .htaccess
    when AllowOverride isn't None


2.3.2.開放塊容器

  我沒有在apache httpd的說明文檔中找到這個說法,「開發塊容器」僅僅是個人我的理解。不在你們的討論之列,你有好的建議我以爲能夠接受,能夠修改個人標題。


  開發塊大多用在配置文件系統(文件塊,httpd佔用到的空間),網頁空間(網頁塊,發佈出去的空間,也可能包含一些數據庫中的內容)。

  文件塊的表明,<Directory>、<Files>,其中指令做用於該目錄、子目錄、以及其中的文件。(實現同樣的效果,也可使用「分佈式配置文件」)

<Directory /var/web/dir1>
    Options +Indexes
</Directory>
<Directory /var/web/dir1>
    <Files private.html>
        Require all denied
    </Files>
</Directory>


  網頁塊的表明,<Location>、<LocationMatch>……

<LocationMatch ^/private>
    Require all denied
</LocationMatch>
<Location /server-status>
    SetHandler server-status
</Location>


2.4.服務配置

  core提供的一些基本配置指令

2.4.1.服務識別

  ①ServerName

    服務標識符,重定向時須要用到。用於虛擬主機時,會覆蓋主配置的設置項目。

ServerName www.example.com
當設置中沒有出現端口號時,會自動對應請求進來時使用的端口號


  ②ServerAdmin

    當訪問出現錯誤時,返回給客戶瀏覽器聯繫信息。

ServerAdmin www-admin@example.com


  ③ServerSignature

    用於在返回的頁面下產生一行內容(httpd版本、服務器域名、端口),調試未知頁面錯誤時較爲有用。

ServerSignature On|Off|EMail
默認Off

效果:wKioL1mn8PLyLZ-PAAAUJew9CHo469.png


  ④ServerTokens

    用於返回錯誤時提供某些服務器的信息。


2.4.2.文件位置

  ①DocumentRoot

    httpd發佈文件的根目錄

  ②ErrorLog

    設定日誌文件的名稱(包含路徑),不是絕對路徑的時候,以ServerRoot爲基礎。默認「logs/error_log」(unix)。

  PifFile

    默認「logs/httpd.pid」

  ServerRoot

    服務安裝的路徑,路徑在編譯經過「prefix」肯定。


2.5.SSL/TLS

  httpd使用了模塊「mod_ssl」,該模塊提供了OpenSSL庫的接口。使httpd實現安全套接字層和傳輸層安全協議的強加密成爲可能。


2.5.1.mod_ssl配置

相關文章
相關標籤/搜索