天天看點

httpd 虛拟主機的三種配置方式

實驗環境

實體主機IP為192.168.43.78,安裝httpd-2.4

分别配置:

  1. 基于IP的兩台httpd虛拟主機,URL分别為http://192.168.43.78和http://192.168.43.79;
  2. 基于PORT的兩台虛拟主機,URL分别為http://192.168.43.78和http://192.168.43.78:8080
  3. 基于FQDN的兩台虛拟主機,URL分别為http://www1.server.com和http://www2.server.com

httpd-2.4 虛拟主機的配置項

<VitualHost IP:PORT>
      ServerName FQDN
      DocumentRoot ""
      ErrorLog ""
      CustomLog "" Combined
      <Directory "">
            Options {None|Index|FollowSymLink}
            AllowOverride None
            Require all granted  #也可以指定IP,或基于使用者的通路控制
      </Directory>
      Alias
     等等
</VirtualHost>
           

一、基于IP的虛拟主機配置實踐

基于IP的虛拟主機雖然節約了實體資源,但需要額外配置IP位址,如果是公網生産環境,也是一項額外成本。

配置要求:

(1) 站點1的IP為192.168.43.78,域名為www1.server.com,文檔路徑為/data/www1/html;

(2) 站點2的IP為192.168.43.79,域名為www2.server.com,文檔路徑為/data/www2/html。

配置步驟:

(1) 建立各自的文檔路徑和首頁檔案

# mkdir -pv /data/www{1,2}/html
#編輯首頁以示區分。
# vim /data/www1/html/index.html
        <h1>This is www1 Server</h1>
# vim /data/www2/html/index.html
        <h1>This is www2 Server</h1>
           

(2) 為伺服器主機設定2個IP位址

# 這裡我是直接編輯網卡配置檔案,設定IPADDR1和IPADDR2,沒有設定網卡别名
# vim /etc/sysconfig/network-scripts/ifcfg-eno16777736
        ...
        IPADDR1="192.168.43.78"
        PREFIX1="24"
        IPADDR2="192.168.43.79"
        PREFIX2="24"
        ...
# 重新開機網絡服務以立即生效
# systemctl restart network.service
           

(3) 增加并編輯虛拟機配置檔案

# 跳轉到配置檔案目錄
# cd /etc/httpd/conf.d/
# 增加并編輯www1虛拟主機的配置檔案
# vim vhost_www1.conf
<VirtualHost 192.168.43.78:80>
        ServerName "www1.server.com"
        DocumentRoot "/data/www1/html"
        <Directory "/data/www1/html">
                Options None
                AllowOverride None
                Require all granted
        </Directory>
        Customlog "logs/www1/access_log" combined
        ErrorLog "logs/www1/error_log"
</VirtualHost>
# 增加并編輯www2虛拟主機的配置檔案
# vim vhost_www2.conf
<VirtualHost 192.168.43.79:80>
        ServerName "www2.server.com"
        DocumentRoot "/data/www2/html"
        <Directory "/data/www2/html">
                Options None
                AllowOverride None
                Require all granted
        </Directory>
        Customlog "logs/www2/access_log" combined
        ErrorLog "logs/www2/error_log"
</VirtualHost>
           

(4) 驗證

# 檢查配置檔案文法,并重新開機服務
# httpd -t
Syntax OK
# systemctl restart httpd.service
           

浏覽器分别通路http://192.168.43.78和http://192.168.43.79,分别顯示對應内容:

httpd 虛拟主機的三種配置方式
httpd 虛拟主機的三種配置方式

二、基于PORT的虛拟主機配置實踐

基于PORT的虛拟主機雖然節約了IP位址成本,但對于使用者來說,輸入url時還需要指定端口,對于沒有IT基礎的使用者來說,也是一項挑戰,不利于拓寬使用者面。

配置要求:

(1) 站點1的IP:PORT為192.168.43.78:80,域名為www1.server.com,文檔路徑為/data/www1/html;

(2) 站點2的IP:PORT為192.168.43.78:8080,域名為www2.server.com,文檔路徑為/data/www2/html。

配置步驟:

(1) www1的配置不用更改,更改www2的配置

Listen 8080  #添加監聽端口8080
<VirtualHost 192.168.43.78:8080>
        ServerName "www2.server.com"
        DocumentRoot "/data/www2/html"
        <Directory "/data/www2/html">
                Options None
                AllowOverride None
                Require all granted
        </Directory>
        Customlog "logs/www2/access_log" combined
        ErrorLog "logs/www2/error_log"
</VirtualHost>
           

(2)驗證

*浏覽器通路http://192.168.43.78:8080,顯示www2的首頁:

httpd 虛拟主機的三種配置方式

三、基于FQDN的虛拟主機配置實踐

如果有自己的DNS伺服器,基于FQDN的虛拟主機隻需額外指定一個主機名,在DNS伺服器中添加條目,就可以通路;或者額外申請一個域名。

這裡使用在本機上搭建的bind作為DNS伺服器,配置分為兩步。

配置要求

(1) 站點1的IP:PORT為*:80,域名為www1.server.com,文檔路徑為/data/www1/html;

(2) 站點2的IP:PORT為*:80,域名為www2.server.com,文檔路徑為/data/www2/html。

因為不再需要IP和PORT來區分虛拟主機,是以IP為*,即本機的所有IP,端口為http預設端口80

1. 配置DNS服務,并将http用戶端的DNS指向對應位址

(1) 在bind配置檔案/etc/named.rfc1912.zones中定義區域

# vim /etc/named.rfc1912.zones
zone "server.com" IN {
        type master;
        file "server.com.zone";
};
           

(2) 建立并編輯區域資料檔案,用于解析server.com域中的域名

# vim /var/named/server.com.zone
$TTL 3600
$ORIGIN server.com.
@       IN      SOA     ns1.server.com.         dnsadmin.server.com. (
                2018101501
                1H
                10M
                3D
                1D )
        IN      NS      ns1.server.com.
        IN      MX  10  mx1
ns1     IN      A       192.168.43.78
mx1     IN      A       192.168.43.78
www1    IN      A       192.168.43.78
www2    IN      A       192.168.43.78
           

(3) 重載配置檔案和區域資料檔案

# 檢查配置檔案
# named-checkconf
# 檢查區域資料檔案
# named-checkzone server.com /var/named/server.com.zone
    zone server.com/IN: loaded serial 2018101501
    OK
# 重載
# rndc reload
    server reload successful
           
2.配置基于FQDN的虛拟主機

(1) 更改www1和www2的配置

# vim vhost_www1.conf
<VirtualHost *:80>
        ServerName "www1.server.com"
        DocumentRoot "/data/www1/html"
        <Directory "/data/www1/html">
                Options None
                AllowOverride None
                Require all granted
        </Directory>
        Customlog "logs/www1/access_log" combined
        ErrorLog "logs/www1/error_log"
</VirtualHost>

# vim vhost_www2.conf
<VirtualHost *:80>
        ServerName "www2.server.com"
        DocumentRoot "/data/www2/html"
        <Directory "/data/www2/html">
                Options None
                AllowOverride None
                Require all granted
        </Directory>
        Customlog "logs/www2/access_log" combined
        ErrorLog "logs/www2/error_log"
</VirtualHost>
           

(2) 檢查并重新開機服務

# httpd -t
    Syntax OK
# systemctl restart httpd.service
           
3. 驗證

(1) 将用戶端的DNS伺服器指向192.168.43.78

httpd 虛拟主機的三種配置方式

(2) 浏覽器分别通路http://www1.server.com和http://www2.server.com,顯示對應内容:

httpd 虛拟主機的三種配置方式
httpd 虛拟主機的三種配置方式

自此,httpd-2.4中三種虛拟主機的配置方式已實踐完成。