眾所周知,一臺(tái)物理服務(wù)器只能運(yùn)行一個(gè)站點(diǎn),但如若想實(shí)現(xiàn)一臺(tái)服務(wù)器運(yùn)行多個(gè)站點(diǎn)時(shí),就不得不用到虛擬主機(jī)了。虛擬主機(jī),顧名思義,就是一個(gè)虛擬出來的主機(jī),當(dāng)在服務(wù)單配置完成后,客戶端訪問時(shí)就像是訪問了多個(gè)后端服務(wù)器。
拉孜ssl適用于網(wǎng)站、小程序/APP、API接口等需要進(jìn)行數(shù)據(jù)傳輸應(yīng)用場(chǎng)景,ssl證書未來市場(chǎng)廣闊!成為創(chuàng)新互聯(lián)公司的ssl證書銷售渠道,可以享受市場(chǎng)價(jià)格4-6折優(yōu)惠!如果有意向歡迎電話聯(lián)系或者加微信:18982081108(備注:SSL證書合作)期待與您的合作!
實(shí)現(xiàn)虛擬主機(jī)有三種不同的方式:
基于IP的虛擬主機(jī):使用不同的IP地址提供不同的站點(diǎn)
基于PORT的虛擬主機(jī):使用不同的端口提供不同的站點(diǎn)
基于HOSTNAME的虛擬主機(jī):使用不同的主機(jī)名提供不同站點(diǎn)
為了更直觀的感受,下面一一實(shí)現(xiàn)基于三種方式的虛擬主機(jī):
說明一下實(shí)驗(yàn)環(huán)境,實(shí)驗(yàn)主機(jī)為centos7.3,IP地址為:192.168.1.104
首先安裝httpd服務(wù),這里使用的是httpd2.4.6版本:
# yum -y install httpd
安裝完成后查看安裝文件:
# rpm -ql httpd
對(duì)應(yīng)的文件做一些簡(jiǎn)單說明:
服務(wù)腳本:/etc/rc.d/init.d/httpd 腳本配置文件:/etc/sysconfig/httpd 運(yùn)行目錄:/etc/httpd 配置文件: 主配置文件:/etc/httpd/conf/httpd.conf 擴(kuò)展配置:/etc/httpd/conf.d/*.conf 監(jiān)聽的Socket:80/tcp,443/tcp 文檔根目錄:/var/www/html CGI:/var/www/cgi-bin/ 默認(rèn)主頁:index.html
在實(shí)驗(yàn)之前,須確保在httpd.conf配置文件中:
httpd服務(wù)監(jiān)聽的端口為80
注釋掉DocumentRoot "/var/www/html/"
一、基于IP的虛擬主機(jī)實(shí)現(xiàn):
本機(jī)的IP地址為192.168.1.104,需在添加一個(gè)IP地址:
# ifconfig ens36:0 192.168.1.200 netmask 255.255.255.0 broadcast 192.168.1.255 up
用ifconfig查看:
可看到ens36:0已添加成功。
為了便于管理,我們?cè)跀U(kuò)展配置文件中新建VirtualHost.conf文件:
]# vim VirtualHost.conf
添加內(nèi)容如下:
DocumentRoot "/var/www/test1/" ServerName 192.168.1.104 DocumentRoot "/var/www/test2/" ServerName 192.168.1.200
而后為添加的兩個(gè)站點(diǎn)添加主頁
首先創(chuàng)建兩個(gè)目錄:
# mkdir -pv /var/www/test{1,2} mkdir: created directory ‘/var/www/test1’ mkdir: created directory ‘/var/www/test2’
為test1提供主頁文件:
# vim /var/www/test1/index.html
添加內(nèi)容如下:
Test1 Page
保存退出。站點(diǎn)test2同理;
執(zhí)行語法檢查:
# httpd -t Syntax OK
重讀配置文件:
# systemctl reload httpd
測(cè)試結(jié)果:
站點(diǎn)test1:
站點(diǎn)test2:
二、基于端口的虛擬主機(jī)實(shí)現(xiàn):
編輯擴(kuò)展配置文件:
]# vim VirtualHost.conf
添加內(nèi)容如下:
DocumentRoot "/var/www/test1/" ServerName 192.168.1.104 DocumentRoot "/var/www/test2/" ServerName 192.168.1.200
在主配置文件中,監(jiān)聽端口下面添加一行
Listen 8080
保存退出
執(zhí)行語法檢查:
# httpd -t Syntax OK
注:此處由于添加了端口,需要重啟服務(wù)方能生效
# systemctl restart httpd # ss -tnl State Recv-Q Send-Q Local Address:Port Peer Address:Port LISTEN 0 128 *:22 *:* LISTEN 0 100 127.0.0.1:25 *:* LISTEN 0 128 :::8080 :::* //8080端口已監(jiān)聽 LISTEN 0 128 :::80 :::* //80端口已監(jiān)聽 LISTEN 0 128 :::22 :::* LISTEN 0 100 ::1:25 :::*
測(cè)試結(jié)果:
站點(diǎn)1:
站點(diǎn)2:
三、由于基于IP和端口的虛擬主機(jī)不常用,故而此處演示基于FQDN的虛擬主機(jī)實(shí)現(xiàn):
在擴(kuò)展配置文件中添加如下內(nèi)容:
為了使主機(jī)名解析成功,需要修改host文件,我們此處使用win下瀏覽器測(cè)試,故而需要修改win下hosts文件,路徑為:
C:\Windows\System32\drivers\etc\hosts
添加如下內(nèi)容
開始測(cè)試:
站點(diǎn)test1:
站點(diǎn)test2:
以上,即使基于httpd的虛擬主機(jī)三種實(shí)現(xiàn)方式,但在日常生產(chǎn)中,常需要對(duì)特定用戶實(shí)現(xiàn)訪問控制,下面簡(jiǎn)單演示基于用戶的控制訪問:
編輯擴(kuò)展配置文件,并添加如下內(nèi)容:
接下來用htpasswd生成密碼:
創(chuàng)建對(duì)應(yīng)的admin目錄及主頁文件
# mkdir /var/www/test1/admin //創(chuàng)建目錄 # vim /var/www/test1/admin/index.html //創(chuàng)建主業(yè)文件Authentication
//添加的內(nèi)容
如圖:
而后訪問:
輸入用戶名密碼:
至此httpd的虛擬主機(jī)和用戶認(rèn)證就實(shí)現(xiàn)了。