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