Apache配置與應用
一。構建虛擬Web主機
虛擬Web主機指的是在同一臺伺服器中執行多個Web站點,其中每一個立站點實際上並不獨立佔用整個伺服器,因此被稱為"虛擬"Web主機。通過虛擬 Web 主機服務可以充分利用伺服器的硬體資源, 從而大大降低網站構建及執行成本
使用httpd服務可以非常方便地構建虛擬主機伺服器,只需要執行一個httpd服務就能夠同時支撐大量的Web站點。httpd服務支援的虛擬主機型別包括以下三種∶
1.基於域名∶為每個虛擬主機使用不同的域名,但是其對應的 IP 地址是相同的。例如,www.benet.com和 www.accp.com站點的IP地址都是192.168.150.5。這是使用最為普遍的虛擬 Web
2.基於IP地址∶為每個虛擬主機使用不同的域名,且各自對應的IP地址也不相同。這種方式需要為伺服器配備多個網路介面,因此應用並不是非常廣泛。
3.基於埠∶這種方式並不使用域名、IP地址來區分不同的站點內容,而是使用了不同的TCP埠號,因此使用者在瀏覽不同的虛擬站點時需要同時指定埠號才能訪問。
第一種:基於域名的虛擬主機
1.為虛擬主機提供域名解析
方法一:部署DNS域名解析伺服器來提供域名解析
方法二:在/etc/hosts檔案中臨時配置域名與IP地址的對映關係
echo "192.168.150.5www.benet.com">> /etc/hosts
echo "192.168.150.
2.為虛擬主機準備網頁文件
mkdir -p /var/www/html/benet
mkdir -p /var/www/html/accp
echo"<h1>this is benet</h1>">/var/www/html/benet/index.html
echo "<h1>this is accp</h1>">/var/ww/html/accp/index.html
3.新增虛擬主機配置
根據不同安裝的方法進入虛擬主機的配置檔案
#原始碼編譯安裝的虛擬主機配置檔案路徑
vim/usr/local/httpd/conf/extra/httpd-vhosts.conf
#RPM或YUM安裝的虛擬主機配置檔案路徑
vim /etc/httpd/conf.d/vhosts.conf
#設定虛擬主機配置區域,(一個域名配置一個)
<VirtualHost 192.168.150.5:80>
ServerAdmin [email protected] #設定管理員郵箱,這行可忽略
DocumentRoot "/var/www/html/benet" #設定網站根目錄
ServerName www.benet.com #設定Web站點的完整域名 (主機名+域名)
#ServerAlias www.dummy-host.example.com
ErrorLog "logs/benet.com-error_log" #設定錯誤日誌檔案的路徑
CustomLog "logs/benet.com-access_log" common #設定訪問日誌檔案的路徑,這裡的logs是從apache的工作目錄開始就是/usr/local/httpd/裡的logs建立檔案
</VirtualHost>
4.設定訪問控制,在虛擬主機配置設定完後設置
<Directory "/var/www/html">#設定目錄訪問許可權
Options None #不啟用任何的伺服器特性
AllowOverride None #不允許重寫Apache預設配置
Require all granted #允許所有主機訪問(必須設定,預設禁止所有主機訪問)
</Directory>
Options指令解釋∶
Options指令的主要作用是控制特定目錄將啟用哪些伺服器特性。可以在Apache服務配置檔案的虛擬主機配置(VirtualHost)、特定目錄配置(Directory)以及.htaccess檔案中使用
Options指令常用選項∶
None∶表示不啟用任何的伺服器特性
FollowSymLinks∶伺服器允許在此目錄中使用符號連線(軟連結)
Indexes∶如果輸入的網址對應伺服器上的一個檔案目錄,而此目錄中又沒有Apache配置檔案中的DirectoryIndex指令指定的檔案(例如∶DirectoryIndex index.html index.php),則列出該目錄下的所有檔案
Multiviews∶如果客戶端請求的路徑可能對應多種型別的檔案,那麼伺服器將根據客戶端請求的具體情況自動選擇一個最匹配客戶端要求的檔案。例如,在伺服器站點的file資料夾下中存在名為AAA.jpg和AAA.html的兩個檔案,此時使用者輸入http://localhost/file/AAA,如果在file資料夾下並沒有AAA子目錄,那麼伺服器將會嘗試在file目錄下查詢形如AAA.*的檔案,然後根據使用者請求的具體情況返回最匹配要求的AAA.jpg或者AAA.html
All∶表示除MultiViews之外的所有特性。這也是Options指令的預設設定。
AllowOverride指令解釋
.htaccess分散式隱含配置檔案)∶提供了針對每個目錄改變配置的方法,即在一個特定的目錄中放置一個包含特定指令的檔案,其中的指令作用於此目錄及其所有子目錄。
當Allowoverride設定成None時,相應的配置目錄下的.htaccess檔案是不被讀取的,即無法生效。
當Allowoverride設定成All時,每一次請求訪問相應目錄下的檔案時,都會讀取.htaccess檔案的配置,意味著原Apache指令會被.htaccess檔案中的指令重寫。
從效能和安全性考慮,一般都儘可能避免使用.htaccess檔案,任何希望放在.htaccess檔案中的配置,都可放在主配置檔案(httpd.conf)的<Director>段中,而且高效。因此Allowoverride屬性一般都配置成None
地址限制策略∶
Require all granted∶允許所有主機訪問。
Require all denied∶拒絕所有主機訪問。
Require local∶僅允許本地主機訪問。
Require[not]host <主機名或域名列表>∶允許或拒絕指定主機或域名訪問。 Require[not]ip <IP 地址或網段列表>∶允許或拒絕指定 IP 地址網路訪問。
5.載入獨立的配置檔案
#若是原始碼編譯安裝的httpd服務主配置檔案路徑
vim /usr/local/httpd/conf/httpd.conf
--480行左右--取消註釋
Include conf/extra/httpd-vhosts.conf#加載獨立的配置檔案
#若是RPM或YUM安裝的httpd服務主配置檔案路徑
vim /etc/httpd/conf/httpd.conf
IncludeOptional conf.d/*.conf#最後一行已預設開啟此項
systemctl restart httpd #重啟http服務重新讀取配置檔案
6.在客戶機中訪問虛擬Web主機
http://www.benet.com
http://www.accp.com
使用一臺win10的客戶機將其配成與伺服器同一網段並且設定伺服器IP為DNS地址,先嚐試進行正向解析成功,再然後進入網頁看是否分別載入頁面檔案(注意:如果之前在網頁中搜索過域名需要刪除網頁的快取記錄,否則可能載入不出來)