您好,登錄后才能下訂單哦!
眾所周知,一臺物理服務(wù)器只能運(yùn)行一個站點,但如若想實現(xiàn)一臺服務(wù)器運(yùn)行多個站點時,就不得不用到虛擬主機(jī)了。虛擬主機(jī),顧名思義,就是一個虛擬出來的主機(jī),當(dāng)在服務(wù)單配置完成后,客戶端訪問時就像是訪問了多個后端服務(wù)器。
實現(xiàn)虛擬主機(jī)有三種不同的方式:
基于IP的虛擬主機(jī):使用不同的IP地址提供不同的站點
基于PORT的虛擬主機(jī):使用不同的端口提供不同的站點
基于HOSTNAME的虛擬主機(jī):使用不同的主機(jī)名提供不同站點
為了更直觀的感受,下面一一實現(xiàn)基于三種方式的虛擬主機(jī):
說明一下實驗環(huán)境,實驗主機(jī)為centos7.3,IP地址為:192.168.1.104
首先安裝httpd服務(wù),這里使用的是httpd2.4.6版本:
# yum -y install httpd
安裝完成后查看安裝文件:
# rpm -ql httpd
對應(yīng)的文件做一些簡單說明:
服務(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
在實驗之前,須確保在httpd.conf配置文件中:
httpd服務(wù)監(jiān)聽的端口為80
注釋掉DocumentRoot "/var/www/html/"
一、基于IP的虛擬主機(jī)實現(xiàn):
本機(jī)的IP地址為192.168.1.104,需在添加一個IP地址:
# ifconfig ens36:0 192.168.1.200 netmask 255.255.255.0 broadcast 192.168.1.255 up
用ifconfig查看:
可看到ens36:0已添加成功。
為了便于管理,我們在擴(kuò)展配置文件中新建VirtualHost.conf文件:
]# vim VirtualHost.conf
添加內(nèi)容如下:
<VirtualHost 192.168.1.104:80> DocumentRoot "/var/www/test1/" ServerName 192.168.1.104 </VirtualHost> <VirtualHost 192.168.1.200:80> DocumentRoot "/var/www/test2/" ServerName 192.168.1.200 </VirtualHost>
而后為添加的兩個站點添加主頁
首先創(chuàng)建兩個目錄:
# 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)容如下:
<h2>Test1 Page</h2>
保存退出。站點test2同理;
執(zhí)行語法檢查:
# httpd -t Syntax OK
重讀配置文件:
# systemctl reload httpd
測試結(jié)果:
站點test1:
站點test2:
二、基于端口的虛擬主機(jī)實現(xiàn):
編輯擴(kuò)展配置文件:
]# vim VirtualHost.conf
添加內(nèi)容如下:
<VirtualHost 192.168.1.104:80> DocumentRoot "/var/www/test1/" ServerName 192.168.1.104 </VirtualHost> <VirtualHost 192.168.1.104:8080> DocumentRoot "/var/www/test2/" ServerName 192.168.1.200 </VirtualHost>
在主配置文件中,監(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 :::*
測試結(jié)果:
站點1:
站點2:
三、由于基于IP和端口的虛擬主機(jī)不常用,故而此處演示基于FQDN的虛擬主機(jī)實現(xiàn):
在擴(kuò)展配置文件中添加如下內(nèi)容:
為了使主機(jī)名解析成功,需要修改host文件,我們此處使用win下瀏覽器測試,故而需要修改win下hosts文件,路徑為:
C:\Windows\System32\drivers\etc\hosts
添加如下內(nèi)容
開始測試:
站點test1:
站點test2:
以上,即使基于httpd的虛擬主機(jī)三種實現(xiàn)方式,但在日常生產(chǎn)中,常需要對特定用戶實現(xiàn)訪問控制,下面簡單演示基于用戶的控制訪問:
編輯擴(kuò)展配置文件,并添加如下內(nèi)容:
接下來用htpasswd生成密碼:
創(chuàng)建對應(yīng)的admin目錄及主頁文件
# mkdir /var/www/test1/admin //創(chuàng)建目錄 # vim /var/www/test1/admin/index.html //創(chuàng)建主業(yè)文件 <h2>Authentication</h2> //添加的內(nèi)容
如圖:
而后訪問:
輸入用戶名密碼:
至此httpd的虛擬主機(jī)和用戶認(rèn)證就實現(xiàn)了。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。