Apache的虛擬主機功能


Apache的虛擬主機功能 (Virtual Host) 是可以讓一台服務器基於IP、主機名或端口號實現提供多個網站服務的技術

 

第一種情況:基於IP地址

 

這種情況很常見:一台服務器擁有多個IP地址,當用戶訪問不同IP地址時顯示不同的網站頁面。

第1步為網卡添加多個IP地址:(方法不唯一)

 

 

 

 

 重新啟動網卡設備后使用ping命令檢查是否配置正確

 

 

 

 

第2步:分別創建網站數據目錄。
在/home/wwwroot目錄下分別創建三個網站數據目錄:

mkdir -p /home/wwwroot/100

 mkdir -p /home/wwwroot/110

 mkdir -p /home/wwwroot/120

分別在這三個網站數據目錄中寫入主頁文件,內容為該網站的IP地址:

[root@linuxprobe ~]# echo "IP:192.168.5.100" > /home/wwwroot/100/index.html

[root@linuxprobe ~]# echo "IP:192.168.5.110" > /home/wwwroot/110/index.html

[root@linuxprobe ~]# echo "IP:192.168.5.120" > /home/wwwroot/120/index.html

 

 

 

第3步:在配置文件中描述基於IP地址的虛擬主機。

編輯主配置文件(/etc/httpd/conf/httpd.conf),在主配置文件的末尾按下面格式定義虛擬主機信息:

<VirtualHost 192.168.5.100>
DocumentRoot /home/wwwroot/100
ServerName www.haozhikuan-hbza.com
<Directory /home/wwwroot/100 >
AllowOverride None
Require all granted
</Directory>
</VirtualHost>

<VirtualHost 192.168.5.110>
DocumentRoot /home/wwwroot/110
ServerName bbs.haozhikuan-hbza.com
<Directory /home/wwwroot/110 >
AllowOverride None
Require all granted
</Directory>
</VirtualHost>

<VirtualHost 192.168.5.120>
DocumentRoot /home/wwwroot/120
ServerName tech.haozhikuan-hbza.com
<Directory /home/wwwroot/120 >
AllowOverride None
Require all granted
</Directory>
</VirtualHost>

 

 

 

 

 

 直接在末尾復制,然后重啟服務即可

 

第4步:分別訪問192.168.5.100/110/120驗證結果:

 

 

 

 

 

 

 

 

 

 

 

第二種情況:基於主機名

當服務器無法為每個網站都分配到獨立IP地址時,可以試試讓Apache服務程序自動識別來源主機名或域名然后跳轉到指定的網站

 

第1步:配置網卡IP地址與hosts文件。

hosts文件作用是定義IP地址與主機名的映射關系,即強制將某個主機名地址解析到指定的IP地址

vim /etc/hosts

//每行只能寫一條,格式為IP地址+空格+主機名(域名)。

 

第2步:分別創建網站數據目錄:

 mkdir -p /home/wwwroot/www

mkdir -p /home/wwwroot/bbs

mkdir -p /home/wwwroot/tech

分別在網站目錄中寫入首頁文件:

echo "www.haozhikuan-hbza.com" > /home/wwwroot/www/index.html

echo "www.haozhikuan-hbza.com" > /home/wwwroot/bbs/index.html

echo "www.haozhikuan-hbza.com" > /home/wwwroot/tech/index.html

 

 

 

第3步:在配置文件中描述基於主機名稱的虛擬主機。
編輯主配置文件(/etc/httpd/conf/httpd.conf),在主配置文件的末尾按下面格式定義虛擬主機信息:

<VirtualHost 192.168.5.100>

DocumentRoot "/home/wwwroot/www"

ServerName "www.haozhikuan-hbza.com"

<Directory "/home/wwwroot/www">

AllowOverride None

Require all granted

</directory>

</VirtualHost>

 

<VirtualHost 192.168.5.110>

DocumentRoot "/home/wwwroot/bbs"

ServerName "bbs.haozhikuan-hbza.com"

<Directory "/home/wwwroot/bbs">

AllowOverride None

Require all granted

</Directory>

</VirtualHost>

 

<VirtualHost 192.168.5.120>

DocumentRoot "/home/wwwroot/tech"

ServerName "tech.haozhikuan-hbza.com"

<Directory "/home/wwwroot/tech">

AllowOverride None

Require all granted

</directory>

</VirtualHost>

 

 復制重啟服務即可

 

第4步:分別訪問網站驗證結果

 

 

 

 

 

 

 

 

 

第三種情況:基於端口號

 

我們可以讓服務器開啟多個服務端口后,然后讓用戶能夠通過訪問服務器的指定端口來找到想要的網站。

 

第1步:配置服務器的IP地址:

 

 

 

第2步:分別創建網站數據目錄。
分別創建端口為6111,6222的網站數據目錄:

 mkdir -p /home/wwwroot/6111

mkdir -p /home/wwwroot/6222

分別在網站數據目錄中寫入不同內容的主頁文件:

[root@linuxprobe ~]# echo "port:6111" > /home/wwwroot/6111/index.html

[root@linuxprobe ~]# echo "port:6222" > /home/wwwroot/6222/index.html

 

 

 

第3步:在配置文件中描述基於端口號的虛擬主機。
編輯主配置文件(/etc/httpd/conf/httpd.conf),找到約在42行的Listen 80,並在下面追加:

Listen 6111
Listen 6222

 

 

然后在主配置文件的末尾按下面格式定義虛擬主機信息:

<VirtualHost 192.168.5.100:6111>
DocumentRoot “/home/wwwroot/6111”
ServerName www.haozhikuan-hbza.com
<Directory “/home/wwwroot/6111”>
AllowOverride None
Require all granted
</Directory>
</VirtualHost>

<VirtualHost 192.168.5.100:6222>
DocumentRoot “/home/wwwroot/6222”
ServerName bbs.haozhikuan-hbza.com
<Directory “/home/wwwroot/6222”>
AllowOverride None
Require all granted
</Directory>
</VirtualHost>

 

 

 

第4步:分別訪問網站驗證結果:

 

 

 

 

 

 

注意:以上三種情況均在SElinux禁用情況下進行實驗的,每次實驗最好還原上一次快照,防止配置文件沖突

 

編輯主配置文件(/etc/httpd/conf/httpd.conf),在主配置文件的末尾按下面格式定義虛擬主機信息,記住這個路徑!

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM