1. 程式人生 > >Apache服務器——基於不同端口不同域名搭建的虛擬Web主機

Apache服務器——基於不同端口不同域名搭建的虛擬Web主機

CentOS 7 httpd DNS - bind 虛擬 Web 主機

Apache 簡介:

Apache HTTP Server是開源軟件項目的傑出代表,基於標準的 HTTP 網絡協議提供網頁瀏覽服務,在 Web 服務區領域長期保持著超過半數的份額。Apache 服務器可以運行在Linux、Unix、Windows等多種操作系統平臺中。

Apache的主要特點:

1.源代碼開放;
2.跨平臺應用;
3.支持各種 Web 編程語言;
4.模塊化設計;
5.運行非常穩定;
6.良好的安全性。

虛擬 Web 主機:

虛擬Web主機是指在同一臺服務器中運行多個Web站點,其中的每一個站點實際上並不獨自占用整個服務器。在實際企業應用當中,可以充分利用服務器的硬件資源,從而大大降低網站構建及運行成本。

使用 httpd 可以非常方便的搭建虛擬主機服務器,只需要運行一個httpd服務就能夠同時支撐大量的 Web 站點。httpd 支持的虛擬主機類型包括以下三種:
1.基於域名:為每個虛擬主機使用不同的域名,但是其對應的IP地址是相同的。
2.基於 IP 地址:為每個虛擬主機使用不同的域名,且各自對應的 IP 地址也不相同。
3.基於端口:這種方式並不使用域名、IP 地址來區分不同的站點內容,而是使用不同的 TCP 端口號,因此要求用戶在瀏覽不同的虛擬站點時需要同時指定端口號才能訪問。

本次我們在 CentOS7 上搭建一臺 Apache 服務器,並在這臺服務器上配置基於域名及基於端口的不同 Web 站點。

實驗環境:

CentOS 7 (搭建httpd 網站服務,DNS 域名解析服務)
IP 地址:192.168.100.200
掛載鏡像光盤到目錄/mnt:mount /dev/cdrom /mnt

開始實驗:

一:測試 Apache 服務

搭建 httpd 服務:

rpm -ivh /mnt/Packages/httpd-2.4.6-67.el7.centos.x86_64.rpm

編輯httpd.conf配置文件:

vim /etc/httpd/httpd.conf

Listen 192.168.100.200:80
#Listen 80

ServerName www.wzn.com:80

測試:

關閉防火墻,開啟服務並嘗試訪問:

systemctl stop firewalld
setenforce 0
systemctl start httpd

技術分享圖片


多個域名及端口的虛擬 Web 主機的配置文件在安裝目錄下的區域配置項中,其主要形式如下:
<Directory /> //定義"/"目錄區域的開始
Options FollowSymlinks //控制選項,允許使用符號鏈接
AllowOverride None //不允許隱含控制文件中的覆蓋配置
Order deny,allow //訪問控制策略的應用順序
Deny from all //禁止任何人訪問此區域
</Directory> //定義"/"目錄區域的結束


二:基於不同域名的虛擬主機

創建不同域名訪問的配置文件:

[root@CentOS7-1 ~]# cd /etc/httpd/conf.d/
[root@CentOS7-1 conf.d]# vim vhost.conf 

<Directory /var/www/html>           //設置目錄訪問權限
     Order allow,deny      
     Allow from all           
</Directory>     

NameVirtualHost 192.168.100.200:80  //設置虛擬主機監聽地址
<VirtualHost 192.168.100.200:80>    //設置wzn虛擬站點區域
    ServerAdmin [email protected]        //管理員郵箱
    DocumentRoot /var/www/html/wzn/   //虛擬主機目錄
    ServerName www.wzn.com           //域名
    ErrorLog logs/wzn.com-error_log  //錯誤日誌> 
        CustomLog logs/wzn.com-access_log common //訪問日誌
</VirtualHost>

NameVirtualHost 192.168.100.200:80
<VirtualHost 192.168.100.200:80>
    ServerAdmin [email protected]
    DocumentRoot /var/www/html/wzn01/
    ServerName www.wzn01.com
    ErrorLog logs/wzn01.com-error_log
    CustomLog logs/wzn01.com-access_log common
</VirtualHost>

為虛擬主機準備網頁文檔:

[root@CentOS7-1 ~]# mkdir /var/www/html/wzn
[root@CentOS7-1 ~]# mkdir /var/www/html/wzn01
[root@CentOS7-1 ~]# echo "<h1>this is wzn.com</h1>" > /var/www/html/wzn/index.html
[root@CentOS7-1 ~]# echo "<h1>this is wzn01.com</h1>" > /var/www/html/wzn01/index.html

我們要用到域名解析服務,安裝 bind 進行域名解析:

[root@CentOS7-1 ~]# rpm -ivh /mnt/Packages/bind-9.9.4-50.el7.x86_64.rpm 

編輯 bind 主配置文件:

[root@CentOS7-1 conf.d]# vim /etc/named.conf

options {
        listen-on port 53 { 192.168.100.200; };  //監聽本機地址
        listen-on-v6 port 53 { ::1; };
        directory       "/var/named";
        dump-file       "/var/named/data/cache_dump.db";
        statistics-file "/var/named/data/named_stats.txt";
        memstatistics-file "/var/named/data/named_mem_stats.txt";
        allow-query     { any; };       //允許任意地址解析

編輯區域配置文件,將需要解析的域名放入 zone 中:

[root@CentOS7-1 ~]# vim /etc/named.rfc1912.zones 

##省略部分信息##
zone "wzn.com" IN {
        type master;
        file "wzn.com.zone";
        allow-update { none; };
};

zone "wzn01.com" IN {        
        type master;
        file "wzn01.com.zone";
        allow-update { none; };
};

配置區域配置文件:

[root@CentOS7-1 ~]# cd /var/named/
[root@CentOS7-1 named]# cp -p named.localhost wzn.com.zone
[root@CentOS7-1 named]# vim wzn.com.zone 

$TTL 1D
@       IN SOA  @ admin (
                                        0       ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
        NS      @
        A       192.168.100.200
www IN  A       192.168.100.200

由於 wzn01.com 的區域配置文件和 wzn.com 相同,故直接保留權限復制即可:

[root@CentOS7-1 named]# cp -p wzn.com.zone wzn01.com.zone

測試

重啟服務並測試:

[root@CentOS7-1 named]# systemctl restart named
[root@CentOS7-1 named]# systemctl restart httpd

技術分享圖片
技術分享圖片


三:基於端口的虛擬主機

創建不同端口訪問的配置文件:

[root@CentOS7-1 ~]# vim /etc/httpd/conf.d/vhostport.conf
                                //創建獨立的配置文件

<Directory /var/www/html>           //設置目錄訪問權限
    Order allow,deny      
    Allow from all           
</Directory>     

NameVirtualHost 192.168.100.200:80  //設置虛擬主機監聽地址
<VirtualHost 192.168.100.200:80>    //設置wzn03虛擬站點區域
   ServerAdmin [email protected]        //管理員郵箱
   DocumentRoot /var/www/html/wzn03   //虛擬主機目錄
   ServerName www.wzn03.com           //域名
   ErrorLog logs/wzn03.com-error_log  //錯誤日誌
   CustomLog logs/wzn03.com-access_log common //訪問日誌
</VirtualHost>

NameVirtualHost 192.168.100.200:8080
<VirtualHost 192.168.100.200:8080>
   ServerAdmin [email protected]
   DocumentRoot /var/www/html/wzn04
   ServerName www.wzn04.com
   ErrorLog logs/wzn04.com-error_log
   CustomLog logs/wzn04.com-access_log common
</VirtualHost>

為虛擬主機準備網頁文檔:

[root@CentOS7-1 ~]# mkdir /var/www/html/wzn03
[root@CentOS7-1 ~]# mkdir /var/www/html/wzn04
[root@CentOS7-1 ~]# echo "<h1>this is wzn03.com</h1>" > /var/www/html/wzn/index.html
[root@CentOS7-1 ~]# echo "<h1>this is wzn04.com</h1>" > /var/www/html/wzn01/index.html

更改主配置文件添加監聽端口 8080 :

[root@CentOS7-1 ~]# vim /etc/httpd/conf/httpd.conf

##省略部分信息#
Listen 192.168.100.200:80
Listen 8080     //添加 8080 端口

測試:

重啟 httpd 服務,並通過客戶機訪問不同端口:

[root@CentOS7-1 ~]# systemctl restart httpd

技術分享圖片技術分享圖片

Apache服務器——基於不同端口不同域名搭建的虛擬Web主機