1. 程式人生 > >httpd配置-默認虛擬主機

httpd配置-默認虛擬主機

默認 虛擬主機 httpd

在一個Apache服務器上可以配置多個虛擬主機,實現一個服務器提供多站點服務,其實就是訪問同一個服務器上的不同目錄。

一個服務器主機可以運行多個網站,每個網站都是一個虛擬主機;
任何一個域名解析到這臺機器,都可以訪問的虛擬主機就是默認虛擬主機;
在dns還未生效時,通過修改hosts文件,設置ip與域名的映射解析,來配置域名。

一、在Windows中編輯hosts文件

Windows系統中hosts位置“C:\Windows\System32\drivers\etc\hosts”
說明:在此可以自定義匹配本地IP和域名,目的是添加臨時訪問地址(在DNS未生效的時候使用)。

hosts中添加一行:

192.168.204.128     www.abc.com

技術分享圖片
在windows上ping一下看看能否訪問定義的IP:
技術分享圖片
在瀏覽器中:
技術分享圖片

二、在Linux中設置httpd默認虛擬主機

在物理機訪問的域名www.abc.com並未在虛擬機Apache配置文件中定義,虛擬機中只定義了ServerName www.example.com:80一個域名,該域名即為Apache的默認主機,此時通過任何一個綁定該虛擬機IP的域名進行訪問都會跳轉到該主機。

因為一臺服務器可以跑多個域名,為了方便管理,需要對虛擬主機進行配置:

1、編輯httpd配置文件

[root@zlinux ~]# vim /usr/local/apache2/conf/httpd.conf   //搜索httpd-vhost,去掉#

技術分享圖片

2、編輯虛擬主機配置文件

[root@zlinux ~]# vim /usr/local/apache2/conf/extra/httpd-vhosts.conf 

修改內容:

<VirtualHost *:80>                                     //每個VirtualHost代表一個主機,一個主機代表一個網站    
    ServerAdmin [email protected]     //定義管理員的郵箱
    DocumentRoot "/data/webroot/abctest"                   //指定根目錄
    ServerName zlinux.com                                                    //定義網站名稱
    ServerAlias zlinuxbak.com                                                //設置網站別名
    ErrorLog "logs/dummy-host.example.com-error_log"       //錯誤日誌
    CustomLog "logs/dummy-host.example.com-access_log" common
</VirtualHost>

<VirtualHost *:80>
    ServerAdmin [email protected]
    DocumentRoot "/data/webroot/123test"
    ServerName 123test.com
    ServerAlias www.example.com
    ErrorLog "logs/dummy-host2.example.com-error_log"
    CustomLog "logs/dummy-host2.example.com-access_log" common
</VirtualHost>

說明:此時即定義了一個網站,定義網站的核心參數即為:DocumentRoot(網站根目錄)、ServerName(域名)。
註意: 虛擬主機生效後,原Apache配置文件中的默認主機(www.example.com 192.168.204.128)就會失效。

3、添加虛擬主機相應目錄

[root@zlinux ~]# mkdir /data/wwwroot/
[root@zlinux ~]# mkdir /data/wwwroot/abctest
[root@zlinux ~]# mkdir /data/wwwroot/123test

在目錄中創建PHP測試文件:

[root@zlinux ~]# vim /data/wwwroot/abctest/index.php

<?php
echo "this is a testfile!";
?>
[root@zlinux ~]# vim /data/wwwroot/123test/index.php

<?php
echo "這是一個123test文件!";
?>

4、測試虛擬主機

[root@zlinux ~]# curl -x 192.168.204.128:80 zlinux.com
This is a testfile![root@zlinux ~]# 
[root@zlinux ~]# curl -x 192.168.204.128:80 123test.com
這是一個123test文件![root@zlinux ~]# 
[root@zlinux ~]# curl -x 192.168.204.128:80 000test.com     //在沒有指定或錯誤域名的情況下,訪問任意的域名都將訪問到默認主機所對應的內容。
This is a testfile![root@zlinux ~]# 

httpd配置-默認虛擬主機