1. 程式人生 > >Apache裡的httpd-vhosts.conf詳解

Apache裡的httpd-vhosts.conf詳解

首先看下面的配置:

<VirtualHost *:80>
    ServerAdmin [email protected]-host.example.com
    DocumentRoot "D:/xampp/htdocs/wherein"
    ServerName www.shop_dev.com
    ErrorLog "logs/wherein.com-error.log"
    CustomLog "logs/wherein.com-access.log" common
    <Directory "D:/xampp/htdocs/wherein">
    Options FollowSymLinks IncludesNOEXEC Indexes
    DirectoryIndex index
.html index.htm index.php AllowOverride all Order Deny,Allow Allow from all Require all granted </Directory> </VirtualHost>
 

ServerAdmin指令:

語法: ServerAdmin email-address|URL

用來設定伺服器返回給客戶端的錯誤資訊中包含的管理員郵件地址。便於使用者在收到錯誤資訊後能及時與管理員取得聯絡。

 

ServerName指令:

語法:ServerName [scheme://] FQDN [:port]

用來設定伺服器用於辨識自己的主機名和埠號。主要用於建立重定向URL。

 

DocumentRoot指令:

語法:DocumentRoot directory-path

用來設定httpd提供服務的目錄。即你所在專案入口處的資料夾。

 

ErrorLog指令:

語法: ErrorLog file-path

來設定當伺服器遇到錯誤時記錄錯誤日誌的檔案。如果file-path不是以/開頭的絕對路徑,那麼將會被認為是一個相對於ServerRoot的相對路徑。

 

CustomLog指令:

語法: ErrorLog file-path common

設定日誌檔案,並指明日誌檔案所用的格式(通常通過格式的名字)。

 

<Directory 目錄路徑>...</Directory>

為主目錄或虛擬目錄設定許可權。

 

特性:

Options FollowSymLinks IncludesNOEXEC Indexes

 

命    令 說    明
Indexes 允許目錄瀏覽

當客戶僅指定要訪問的目錄,但沒有指定要訪問目錄下的哪個檔案,而且目錄下不存在預設文件時,Apache以超文字形式返回目錄中的檔案和子目錄列表(虛擬目錄不會出現在目錄列表中)

MultiViews 允許內容協商的多重檢視

MultiViews其實是Apache的一個智慧特性。當客戶訪問目錄 中一個不存在的物件時,如訪問“http://192.168.66.6/data/a”,則Apache會查詢這個目錄下所有a.*檔案。由於 data目錄下存在a.gif檔案,因此Apache會將a.gif檔案返回給客戶,而不是返回出錯資訊

All All包含了除MultiViews之外的所有特性,如果沒有Options語句,預設為All
ExecCGI 允許在該目錄下執行CGI指令碼
FollowSymLinks 可以在該目錄中使用符號連線
Includes 允許伺服器端包含功能
IncludesNoExec 允許伺服器端包含功能,但禁用執行CGI指令碼

 一旦定義允許目錄瀏覽,就會將Web站點的資料夾和檔名結構暴露給黑客。目錄瀏覽還會允許黑客瀏覽檔案並掌握伺服器配置資訊,所以指定該許可權往往帶來安全性上的隱患。除非有充足的理由要使用目錄瀏覽,否則應該禁用它。

 

DirectoryIndex index.html index.htm index.php

設定訪問目錄後進入的預設檔案

 

AllowOverride all 

定義位於每個目錄下.htaccess(訪問控制)檔案中的指令型別。none為禁止使用.htaccess檔案

 

Order Deny,Allow 

Allow from all 

設定預設的訪問許可權與Allow和Deny語句的處理順序

allow, deny:預設禁止所有客戶機的訪問,且Allow語句在Deny語句之前被匹配。如果某條件既匹配Deny語句又匹配Allow語句,則Deny語句會起作用(因為Deny語句覆蓋了Allow語句)。

deny, allow:預設允許所有客戶機的訪問,且Deny語句在Allow語句之前被匹配。如果某條件既匹配Deny語句又匹配Allow語句,則Allow語句會起作用(因為Allow語句覆蓋了Deny語句)。

eg. 

Order deny ,allow
Deny from baidu.com
Deny from 192.168.66.6
除了來自baidu.com域和ip地址為192.168.66.6的客戶機外,允許所有客戶機訪問

Order deny ,allow
Allow from 192.168.66.6
Deny from 192.168.66.1
既匹配Deny語句又匹配Allow語句,由於allow語句覆蓋了deny語句,所以是允許所有客戶機訪問

Order allow ,deny
Allow from 192.168.66.6
Deny from 192.168.66.1
既匹配Deny語句又匹配Allow語句,由於deny語句覆蓋了allow語句,所以是禁止所有客戶機訪問