溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

基于httpd實現(xiàn)虛擬主機(jī)

發(fā)布時間:2020-06-20 12:58:03 來源:網(wǎng)絡(luò) 閱讀:1699 作者:maomaosan2012 欄目:網(wǎng)絡(luò)安全

       眾所周知,一臺物理服務(wù)器只能運(yùn)行一個站點,但如若想實現(xiàn)一臺服務(wù)器運(yùn)行多個站點時,就不得不用到虛擬主機(jī)了。虛擬主機(jī),顧名思義,就是一個虛擬出來的主機(jī),當(dāng)在服務(wù)單配置完成后,客戶端訪問時就像是訪問了多個后端服務(wù)器。


    實現(xiàn)虛擬主機(jī)有三種不同的方式:

  1. 基于IP的虛擬主機(jī):使用不同的IP地址提供不同的站點

  2. 基于PORT的虛擬主機(jī):使用不同的端口提供不同的站點

  3. 基于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查看:

    

基于httpd實現(xiàn)虛擬主機(jī)

    可看到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:

基于httpd實現(xiàn)虛擬主機(jī)

    站點test2:

基于httpd實現(xiàn)虛擬主機(jī)

    二、基于端口的虛擬主機(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:

基于httpd實現(xiàn)虛擬主機(jī)

    站點2:

基于httpd實現(xiàn)虛擬主機(jī)

    三、由于基于IP和端口的虛擬主機(jī)不常用,故而此處演示基于FQDN的虛擬主機(jī)實現(xiàn):

    在擴(kuò)展配置文件中添加如下內(nèi)容:

基于httpd實現(xiàn)虛擬主機(jī)

    為了使主機(jī)名解析成功,需要修改host文件,我們此處使用win下瀏覽器測試,故而需要修改win下hosts文件,路徑為:

C:\Windows\System32\drivers\etc\hosts

    添加如下內(nèi)容

基于httpd實現(xiàn)虛擬主機(jī)

    開始測試:

    站點test1:

基于httpd實現(xiàn)虛擬主機(jī)

    站點test2:

基于httpd實現(xiàn)虛擬主機(jī)

    以上,即使基于httpd的虛擬主機(jī)三種實現(xiàn)方式,但在日常生產(chǎn)中,常需要對特定用戶實現(xiàn)訪問控制,下面簡單演示基于用戶的控制訪問:

    編輯擴(kuò)展配置文件,并添加如下內(nèi)容:

基于httpd實現(xiàn)虛擬主機(jī)

    接下來用htpasswd生成密碼:

基于httpd實現(xiàn)虛擬主機(jī)

    創(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實現(xiàn)虛擬主機(jī)

    而后訪問:

基于httpd實現(xiàn)虛擬主機(jī)

    輸入用戶名密碼:

基于httpd實現(xiàn)虛擬主機(jī)

基于httpd實現(xiàn)虛擬主機(jī)

    至此httpd的虛擬主機(jī)和用戶認(rèn)證就實現(xiàn)了。

向AI問一下細(xì)節(jié)

免責(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)容。

AI