Apache服務器——基於不同端口不同域名搭建的虛擬Web主機
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主機