apache web伺服器的配置和使用

來源:互聯網
上載者:User

上篇文章介紹了如何安裝、啟動apache的web伺服器,本文說明如何對其進行配置以達到特殊的功效。

Apache的配置指令分為兩類:一類由核心模組如core,http等使用,必須位置httpd.conf檔案中,另一類由標準或三方模組使用

1 基本配置指令

httpd.conf中的配置可以三為分部分:主伺服器部分、容器配置部分、擴充部分

主伺服器部分:用來佈建服務的核心參數,作為全域指令,如定義主機名稱、監聽連接埠等

容器配置部分:以<容器名>...</容器名>樣式包圍的配置部分,如虛擬機器主機、目錄、檔案許可權

擴充部分:以include方式載入的外部設定檔

1.1 主伺服器配置

ServerName  定義主機名稱,若無,則以IP地址代替

ServerRoot    定義httpd伺服器處理序所安裝在的根目錄,在選擇不同的layout時,其值是不同的

DocumentRoot  定義提供頁面文檔的根目錄,此目錄是收到URL請求的根目錄,必須用絕對路徑,若路徑中包含空格則需要加引號

ServerAdmin    指定網站管理員的郵件地址

Alias/ScriptAlias  定義別名

User/Group     指定伺服器處理序啟動並執行使用者名稱及組

Listen               指定伺服器監聽的連接埠

LoadModule/LoadFile   載入模組或目標檔案

ErrorDocument   code  content  指定錯誤碼的處理頁面或內容,頁面可以是指令碼或字串

Options      用於指定在目錄的處理特性,其有以下值,這些值可以通過+ -來組合

                    ExecCGI  允許目前的目錄下執行CGI指令碼

                    Includes  允許使用SSI功能

                    Indexes    開戶索引功能,即目錄若沒有由DirecotryIndex指令指定索引檔案,則返回請求目錄的檔案清單

                    FollowSymLinks   允許目錄使用符號連結

                    ALL           除MultiViews之外 的所有特性

                   MultiViews  啟用mod_negotiations模組提供的多視圖功能

1.2 容器配置部分

值得注意的是容器配置可以根據需求嵌套。

<ifModule !模組名>  判斷module是否載入,並根據真假決定是否執行容器內配置,模組名可以加!表示未載入 

<ifDefine Def>         判斷Def是否定義,並根據真假決定是否執行容器內配置,Def前加!表示未定義

<Directory dir>        地區中的配置僅對dir生效,用來限定配置範圍或覆蓋全域配置。目錄可以是完整路徑,也可以是萬用字元匹配目錄,需要注意的是* ? []不能跨/

                              如果需要使用正則匹配,則在運算式前加 ~

<DirectoryMatch>    同上,只是其接受Regex時,不需要加~

<File>                    只針對檔案定義

<FileMatch>           同上

<Location>             對網路URL進行存取控制

<LocationMatch>    同上,可接受正則匹配

需要注意的地方是,容器規則在應用時是有優先順序的,apache處理是從優先順序高到低如下處理:direcotry .htacess direcotryMatch file fileMatch Location 高優先順序規則會使得低優先順序規則失效。同時Directory容器處理順序按目錄名稱的字典排序進行。這些規則混用或使用不當會造成安全性問題,因此不建議使用複雜的規則。 對於檔案和目錄在使用時要注意限制符號連結。

1.3 擴充部分 

在Apache預設設定檔夾中有一個extra目錄,其中定義了其他模組的常用配置,可以通過Include指令載入進來

常見的配置功能如下

httpd-autoindex.conf    自動索引配置

httpd-info.conf             mod_status info模組的配置

httpd-mpm.conf           mpm的配置

httpd-ssl.conf              ssl配置

httpd-userdir.conf        使用者目錄配置,用於在一台伺服器上為多個使用者提供Web網站,將使用者映射到其自己的目錄下

httpd-vhosts.conf         虛擬機器主機配置

1.3.1 mod-dir

此模組支援使用者指定index檔案的功能,配置如下:

DirectoryIndex   index.html  index.php

這樣,當使用者訪問根目錄時,若下面存在對應的檔案,則伺服器會重給使用者重新導向到索引檔案頁面

1.3.2 mod-autoindex

1.3.3 mod-userdir

1.4 組態工具

本地化工具webmin需要安裝到本地,並通過網頁開啟,可以進行GUI方式的設定

windows下zecos Apacheconf可以SSH方式讀取遠程HTTPD.CONF來顯示配置

2 虛擬機器主機配置

虛擬機器主機可以讓我們在一個機器上開放多個網站,實現通過不同的網域名稱或IP訪問時定向到不同的網站頁面上。

2.1 命名虛擬機器主機

基於網域名稱的虛擬機器主機功能開啟後,伺服器可以根據請求中的HOST頭部來定向到不同的網站,需要DNS配置協作方可應用。

其配置比較簡單,下面的樣本為一個簡單的例子

## Use name-based virtual hosting.#NameVirtualHost *:80## VirtualHost example:# Almost any Apache directive may go into a VirtualHost container.# The first VirtualHost section is used for requests without a known# server name.#<VirtualHost *:80>    ServerAdmin webmaster@dummy-host.example.com    DocumentRoot /www/docs/dummy-host.example.com    ServerName dummy-host.example.com    ServerAlias dummy1.example.com    ErrorLog logs/dummy-host.example.com-error_log    CustomLog logs/dummy-host.example.com-access_log common</VirtualHost>

這裡建立了一個網站,其監聽本地所有80的請求,但此虛擬機器主機只提供關於dummy.example.com的網站服務,由於採用了別名,也可以採用別名來訪問,但前提是配置了DNS的相關記錄。需要注意的是,如果採用IPV6地址,則地址應該放在中括弧中。

基於命名的虛擬機器主機不支援HTTP1.0以及之前的協議,並且不支援SSL協議 (SSL協議需要獨立的主機名稱與IP匹配)。若需要支援SSL,則需要監聽443連接埠,並在此連接埠上建立網站服務。具體可以參考httpd_ssl.conf檔案的樣本。

2.2 IP虛擬機器主機

IP虛擬機器主機需要我們的伺服器主機配置多個IP地址,我們將不同的網站配置到不同的IP地址上,IP地址可以是同一個物理網卡的多個虛擬介面地址。

其配置方式如下:

<VirtualHost 192.168.0.2:80>    ServerAdmin postmaster@dummy-host2.localhost    DocumentRoot "D:/xampp/htdocs/dummy-host2.localhost"    ServerName dummy-host2.localhost    ServerAlias www.dummy-host2.localhost    ErrorLog "logs/dummy-host2.localhost-error.log"    CustomLog "logs/dummy-host2.localhost-access.log" combined</VirtualHost>

2.3 動態虛擬機器主機的方法

其他的方法如通過vhost_alias_module模組或者rewrite_module建立大量虛擬機器主機,一般網站供應商才會用到這種功能,不在此詳細描述,可以參考apache的相關文檔。

3  效能相關配置

4 日誌控制

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.