基於 Apache 構建 web虛擬主機詳解

虛擬 web 主機指的是在同一臺服務器中運行多個 web 站點,其中的每一個站點實際上並不獨立佔用整個服務器,所以被稱爲「虛擬」 web主機。經過虛擬 web 主機能夠充分利用服務器的硬件資源,從而大大下降網站構建及運行成本。
使用 httpd 能夠很是方便地構建虛擬主機服務器,只須要運行一個 httpd 服務就可以同時支撐起大量的 web 站點。
httpd 支持的虛擬主機類型包括如下三種:
基於域名:相同IP 、相同端口 、不一樣域名
基於IP地址:不一樣IP、相同端口
基於端口:相同IP、不一樣端口

實際中,咱們最經常使用的仍是不一樣域名來訪問網站。
1、基於域名的虛擬主機:
首先咱們須要爲虛擬主機提供域名解析:html

[root@www /]# vim /etc/named.conf 
……       //
zone "test1.com" in {
        type master;
        file "test1.com.zone";
};

zone "test2.com" in {
        type master;
        file "test2.com.zone";
};
[root@www /]# vim /var/named/test1.com.zone 
……       //
        in      ns      www.test1.com.
www     in      a       192.168.1.10
[root@www /]# vim /var/named/test2.com.zone
……      //
        in      ns      www.test2.com.
www     in      a       192.168.1.10

爲虛擬主機準備網頁文檔:web

[root@www /]# mkdir -p /var/www/html/test1com
[root@www /]# mkdir -p /var/www/html/test2com
[root@www /]# echo "<h1>www.test1.com</h1>" > /var/www/html/test1com/index.html
[root@www /]# echo "<h1>www.test2.com</h1>" > /var/www/html/test2com/index.html

添加虛擬主機配置:vim

[root@www /]# vim /usr/local/httpd/conf/extra/httpd-vhosts.conf 

配置 test1 的虛擬站點區域:
 ……        // 省略部份內容
<VirtualHost *:80>             # 配置監聽地址和端口  「*」 表明任意地址
    ServerAdmin webmaster@test.com     # 設置管理員的郵箱   可刪除
    DocumentRoot "/var/www/html/test1com"    # 指定網站根目錄
    ServerName www.test1.com                 # 配置域名
    ServerAlias www.dummy-host.example.com     # 配置別名
    ErrorLog "logs/www.test1.com-error_log"   # 記錄錯誤日誌
    CustomLog "logs/www.test1.com-access_log" common    # 記錄訪問日誌
        <Directory "/var/www/html">     # 設置目錄訪問權限
        Require all granted    # 容許全部
        </Directory>
</VirtualHost>
配置 test2 的虛擬站點區域:
<VirtualHost *:80>
    ServerAdmin webmaster@test.com
    DocumentRoot "/var/www/html/test2com"
    ServerName www.test2.com
    ServerAlias www.dummy-host.example.com
    ErrorLog "logs/www.test2.com-error_log"
    CustomLog "logs/www.test2.com-access_log" common
        <Directory "/var/www/html">
        Require all granted
        </Directory>
</VirtualHost>
[root@www /]# vim /usr/local/httpd/conf/httpd.conf   # 進入主配置文件
……
Include conf/extra/httpd-vhosts.conf         # 找到本行後將開頭 # 去掉
[root@www /]# systemctl restart httpd      重啓服務使配置生效

客戶機訪問 web 驗證:
基於 Apache 構建 web虛擬主機詳解
基於 Apache 構建 web虛擬主機詳解
2、基於 IP 地址的虛擬主機:
每一種方式之間毫無任何關聯,千萬別把基於IP地址的虛擬主機和基於域名的搞混了服務器

[root@www /]# vim /usr/local/httpd/conf/extra/httpd-vhosts.conf 
……
<VirtualHost 192.168.1.10:80>             # 配置監聽地址爲 192.168.1.10
    ServerAdmin webmaster@test.com
    DocumentRoot "/var/www/html/test1com"
    ServerName www.test1.com
    ServerAlias www.dummy-host.example.com
    ErrorLog "logs/www.test1.com-error_log"
    CustomLog "logs/www.test1.com-access_log" common
        <Directory "/var/www/html">
        Require all granted
        </Directory>
</VirtualHost>
<VirtualHost 192.168.1.20:80>             # 配置監聽地址爲 192.168.1.20
    ServerAdmin webmaster@test.com
    DocumentRoot "/var/www/html/test2com"
    ServerName www.test2.com
    ServerAlias www.dummy-host.example.com
    ErrorLog "logs/www.test2.com-error_log"
    CustomLog "logs/www.test2.com-access_log" common
        <Directory "/var/www/html">
        Require all granted
        </Directory>
</VirtualHost>

基於 Apache 構建 web虛擬主機詳解
基於 Apache 構建 web虛擬主機詳解
3、基於端口的虛擬主機:ide

[root@www /]# vim /usr/local/httpd/conf/extra/httpd-vhosts.conf 
……
<VirtualHost 192.168.1.10:80>
    ServerAdmin webmaster@test.com
    DocumentRoot "/var/www/html/test1com"
    ServerName www.test1.com
    ServerAlias www.dummy-host.example.com
    ErrorLog "logs/www.test1.com-error_log"
    CustomLog "logs/www.test1.com-access_log" common
        <Directory "/var/www/html">
        Require all granted
        </Directory>
</VirtualHost>
<VirtualHost 192.168.1.10:8080>               # 修改端口號
    ServerAdmin webmaster@test.com
    DocumentRoot "/var/www/html/test2com"
    ServerName www.test2.com
    ServerAlias www.dummy-host.example.com
    ErrorLog "logs/www.test2.com-error_log"
    CustomLog "logs/www.test2.com-access_log" common
        <Directory "/var/www/html">
        Require all granted
        </Directory>
</VirtualHost>
listen 80                      # 監聽80端口(默認80也可不用寫這一行)
listen 8080                  # 監聽8080端口

注意:每次配置完畢後都須要重啓服務
基於 Apache 構建 web虛擬主機詳解
基於 Apache 構建 web虛擬主機詳解網站

相關文章
相關標籤/搜索