溫馨提示×

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

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

APache網(wǎng)站服務(wù)配置訪問(wèn)控制和構(gòu)建虛擬主機(jī)

發(fā)布時(shí)間:2020-07-07 15:43:15 來(lái)源:網(wǎng)絡(luò) 閱讀:555 作者:俊偉祺i 欄目:系統(tǒng)運(yùn)維

博文目錄
一、Httpd服務(wù)的訪問(wèn)控制
1、客戶機(jī)地址限制
2、用戶授權(quán)限制
二、構(gòu)建虛擬Web主機(jī)
三、配置基于域名的虛擬主機(jī)
四、配置基于IP地址的虛擬主機(jī)
五、配置基于端口號(hào)的虛擬主機(jī)

一、Httpd服務(wù)的訪問(wèn)控制

為了更好地控制對(duì)網(wǎng)站資源的訪問(wèn)??梢詾樘囟ǖ木W(wǎng)站目錄添加訪問(wèn)授權(quán)。主要分為客戶機(jī)地址限制和用戶授權(quán)限制,這兩種訪問(wèn)控制方式都應(yīng)用于httpd.conf配置文件中的目錄區(qū)域范圍內(nèi)。

1、客戶機(jī)地址限制

通過(guò)Require配置項(xiàng),可以根據(jù)主機(jī)的主機(jī)名或IP地址來(lái)決定是否允許客戶端訪問(wèn)。在httpd服務(wù)器的主配置文件的<Location>、<Directory>、<Files>、<Limit>配置段中均可以使用Require配置項(xiàng)來(lái)控制客戶端的訪問(wèn)。地址的形式可以是IP地址、網(wǎng)絡(luò)地址、主機(jī)名和域名,使用名稱“all”時(shí)表示任意地址。限制策略的常用格式如下所示:

  • Require all granted:表示允許所有主機(jī)訪問(wèn)。
  • Require all denied:表示拒絕所有主機(jī)訪問(wèn)。
  • Require local:表示僅本地主機(jī)訪問(wèn)。
  • Require [not] host <主機(jī)名或域名列表>:表示允許或拒絕指定主機(jī)或域訪問(wèn)。
  • Require [not] ip <IP地址或網(wǎng)段列表>:表示允許或拒絕指定IP地址或網(wǎng)段訪問(wèn)。

定義限制策略時(shí),多個(gè)不帶not的require配置語(yǔ)句之間是或的關(guān)系,即任意一條require配置語(yǔ)句就可以訪問(wèn),若即有不帶not的require配置語(yǔ)句,又出現(xiàn)了帶not的require配置語(yǔ)句,則語(yǔ)句之間是與的關(guān)系,即同時(shí)滿足所有require配置語(yǔ)句才可訪問(wèn)。
具體配置如下:
做一個(gè)策略,僅允許ip地址為192.168.100.101的主機(jī)能夠訪問(wèn)/usr/local/httpd/htdocs網(wǎng)頁(yè)目錄下的內(nèi)容,則策略如下(進(jìn)入網(wǎng)站主配置文件httpd.conf后,在末行模式下輸入/Directory,按回車鍵查找到相應(yīng)的位置):

<Directory "/usr/local/httpd/htdocs">
    ................        <!--省略部分內(nèi)容-->
    Require ip 192.168.100.101         <!--僅允許192.168.100.101的主機(jī)訪問(wèn)網(wǎng)站服務(wù)-->
</Directory>

配置完成重啟服務(wù),192.168.100.101的客戶端就可以訪問(wèn)了。

反之,需要使用“僅拒絕”的限制策略時(shí),靈活使用Require與Require not配置語(yǔ)句設(shè)置拒絕策略,只禁止一部分主機(jī)訪問(wèn)。在使用not禁止訪問(wèn)時(shí)要將其置于<RequireALL></RequireALL>容器中,并在容器中指定相應(yīng)的限制策略。
具體配置如下:

<Directory "/usr/local/httpd/htdocs">
    ................        <!--省略部分內(nèi)容-->
        <RequireAll>
        Require all granted
    Require  not ip 192.168.100.0/24 192.168.200.0/24         <!--拒絕100.0/24和200.0/24網(wǎng)段訪問(wèn),允許其他任何主機(jī)訪問(wèn)-->
        </RequireAll>
</Directory>

也可以通過(guò)以下方式來(lái)限制:

<Directory "/usr/local/httpd/htdocs">
    ................        <!--省略部分內(nèi)容-->
    Deny from 192.168.100.0/24 192.168.200.0/24         <!--拒絕100.0/24和200.0/24網(wǎng)段訪問(wèn),允許其他任何主機(jī)訪問(wèn)-->
</Directory>

2、用戶授權(quán)限制

基于用戶的訪問(wèn)控制包含認(rèn)證和授權(quán)兩個(gè)過(guò)程,是Apache允許指定用戶使用用戶名和密碼訪問(wèn)特定資源的一種方式。httpd服務(wù)器支持使用摘要認(rèn)證(Digest)和基本認(rèn)證(Basic)兩種方式。使用摘要認(rèn)證的話需要在編譯http之前添加“--enable-auth-digest”選項(xiàng),但并不是所有的瀏覽器都支持摘要認(rèn)證,所以不推薦使用;而基本認(rèn)證是httpd服務(wù)的基本功能,不需要預(yù)先配置特別的選項(xiàng)。

1)創(chuàng)建用戶認(rèn)證數(shù)據(jù)文件

[root@centos01 ~]# /usr/local/httpd/bin/htpasswd -c /usr/local/httpd/htdocs/.password admin  <!--#使用
htpasswd工具創(chuàng)建用戶,該用戶與系統(tǒng)用戶無(wú)關(guān),.password文件以.開(kāi)頭,表示為隱藏目錄,該
目錄默認(rèn)不存在,所以要加-c選項(xiàng),在以后需要添加用戶時(shí),不能加-c選項(xiàng),
否則會(huì)覆蓋原來(lái)的內(nèi)容-->
New password:                  <!--輸入密碼-->
Re-type new password:     <!--確認(rèn)密碼-->
Adding password for user admin        <!--提示添加成功-->

查看用戶是否添加:

[root@localhost httpd]# cd /usr/local/httpd/                <!--切換至網(wǎng)站安裝根目錄-->
[root@localhost httpd]# cat conf/.password
admin:oVc8B0TaIVv0s                   <!--用戶admin的信息-->

2)修改Apache主配置文件加載身份驗(yàn)證

[root@centos01 ~]# vi /usr/local/httpd/conf/httpd.conf      <!--編輯主配置文件-->
.......   <!--此處省略部分內(nèi)容-->
    AuthName "Default"      <!--定義訪問(wèn)域的名字-->
    AuthType Basic             <!--基本身份驗(yàn)證-->
    AuthuserFile /usr/local/httpd/htdocs/.password        <!--驗(yàn)證數(shù)據(jù)庫(kù)位置-->
    Require valid-user         <!--經(jīng)過(guò)賬戶密碼驗(yàn)證的合法賬戶可以訪問(wèn)-->
</Directory>

3)重啟apache服務(wù)
[root@centos01 ~]# systemctl restart httpd <!--重啟httpd服務(wù)-->

客戶端訪問(wèn)會(huì)出現(xiàn)提示框,輸入賬戶密碼就可以訪問(wèn)了,需要注意的是,用戶訪問(wèn)授權(quán)與主機(jī)訪問(wèn)控制同時(shí)設(shè)置時(shí),設(shè)置的主機(jī)訪問(wèn)控制優(yōu)先生效。所以在進(jìn)行用戶授權(quán)限制時(shí),需要?jiǎng)h除掉其中的require語(yǔ)句。要不然,用戶訪問(wèn)授權(quán)不會(huì)生效。

二、構(gòu)建虛擬Web主機(jī)

虛擬Web主機(jī)指的是在同一臺(tái)服務(wù)器中運(yùn)行多個(gè)Web站點(diǎn),其中的每個(gè)站點(diǎn)實(shí)際上并不獨(dú)立占用整個(gè)服務(wù)器,因此被稱為“虛擬”Web主機(jī)。通過(guò)虛擬Web主機(jī)服務(wù)可以充分利用服務(wù)器的硬件資源,從而大大降低網(wǎng)站構(gòu)建及運(yùn)行成本。使用httpd可以非常方便地構(gòu)建虛擬主機(jī)服務(wù)器,只需要運(yùn)行一個(gè)httpd服務(wù)就能夠同時(shí)支撐大量的Web站點(diǎn)。httpd支持的虛擬主機(jī)類型包括一下三種:

  • 基于域名:為每個(gè)虛擬主機(jī)使用不同的域名,但是其對(duì)應(yīng)的IP地址是相同的。這是使用最為普遍的虛擬Web主機(jī)類型。
    基于域名:為每個(gè)虛擬主機(jī)使用不同的域名,但是其對(duì)應(yīng)的IP地址是相同的。這是使用最為普遍的虛擬Web主機(jī)類型。
  • 基于IP地址:為每個(gè)虛擬主機(jī)使用不同的域名,且各自對(duì)應(yīng)的IP地址也 不相同。這種方式需要為服務(wù)器配備多個(gè)網(wǎng)絡(luò)接口,因此應(yīng)用并不是非常廣泛。
  • 基于端口:為每個(gè)虛擬主機(jī)使用不同的域名,IP地址來(lái)區(qū)分不同的站點(diǎn)內(nèi)容,而是使用了不同的TCP端口號(hào),因此用戶在瀏覽不同的虛擬站點(diǎn)時(shí)需要同時(shí)指定端口號(hào)才能訪問(wèn)。

三、配置基于域名的虛擬主機(jī)

DNS自行搭建,如果有不明白的可以參考博文:CentOS7簡(jiǎn)單搭建DNS服務(wù)
下面不在進(jìn)行詳細(xì)的解釋。

1、為虛擬主機(jī)提供域名解析

[root@centos01 ~]# vi /etc/named.conf         <!--編輯主配置文件-->
options {
        listen-on port 53 { 192.168.100.10;};
        directory "/var/named";
        allow-query { 192.168.100.0/24; };
};
zone "bdqn.com" IN {
        type    master;
        file    "bdqn.com.zone";
};
zone "benet.com" IN {
        type    master;
        file    "benet.com.zone";
};
[root@centos01 ~]# vi /var/named/bdqn.com.zone       <!--編輯bdqn.com正向解析區(qū)域-->
$TTL    86400
@       SOA     bdqn.com.       root.bdqn.com(
        2019081610
        1H
        15M
        1W
        1D
)
@       NS      centos01.bdqn.com.
centos01 A      192.168.100.10
www      A      192.168.100.10
[root@centos01 ~]# cp /var/named/bdqn.com.zone /var/named/benet.com.zone
[root@centos01 ~]# vi /var/named/benet.com.zone    <!--編輯benet.com正向解析區(qū)域-->
TTL    86400
@       SOA     benet.com.      root.benet.com(
        2019081610
        1H
        15M
        1W
        1D
)
@       NS      centos01.benet.com.
centos01 A      192.168.100.10
www      A      192.168.100.10

2、編輯網(wǎng)卡

[root@centos01 ~]# vi /etc/sysconfig/network-scripts/ifcfg-ens32  <!--編輯網(wǎng)卡-->
……            <!—省略部分內(nèi)容-->
DNS1=192.168.100.10        <!--添加DNS-->
[root@centos01 ~]# systemctl restart network  <!--重啟網(wǎng)卡服務(wù)-->
[root@centos01 ~]# systemctl restart named    <!--重啟DNS服務(wù)-->

3、客戶端解析域名

APache網(wǎng)站服務(wù)配置訪問(wèn)控制和構(gòu)建虛擬主機(jī)

4、為虛擬機(jī)準(zhǔn)備網(wǎng)頁(yè)文檔

為每個(gè)虛擬web主機(jī)準(zhǔn)備網(wǎng)站目錄及網(wǎng)頁(yè)文檔。為了方便測(cè)試,分別為每個(gè)虛擬web主機(jī)提供包含不同的首頁(yè)文件:

[root@centos01 ~]# mkdir -p /var/www/
[root@centos01 ~]# mkdir -p /var/www/bdqn.com
[root@centos01 ~]# mkdir -p /var/www/benet.com
[root@centos01 ~]# echo "www.bdqn.com" > /var/www/bdqn.com/index.html
[root@centos01 ~]# echo "www.benet.com" > /var/www/benet.com/index.html

5、修改主配置文件支持虛擬主機(jī)

[root@centos01 ~]# vi /usr/local/httpd/conf/httpd.conf   <!--編輯主配置文件-->
    390 # Virtual hosts
391 Include conf/extra/httpd-vhosts.conf             <!--刪除該行前面的#號(hào)-->

6、修改虛擬主機(jī)訪問(wèn)權(quán)限

[root@centos01 ~]# vim /usr/local/httpd/conf/extra/httpd-vhosts.conf  <!--創(chuàng)建獨(dú)立的配置文件-->
NameVirtualHost 192.168.100.10:8  <!--虛擬主機(jī)監(jiān)聽(tīng)的IP地址,默認(rèn)是*表示監(jiān)聽(tīng)所有-->
<Directory "/var/www/">            <!--虛擬站點(diǎn)根目錄-->
        order deny,allow                <!--先拒絕后允許訪問(wèn)-->
        allow from all                     <!--允許所有人訪問(wèn)-->
</Directory>

7、配置基于域名的虛擬主機(jī)

[root@centos01 ~]# vim /usr/local/httpd/conf/extra/httpd-vhosts.conf 
NamevirtualHost www.bdqn.com:80    <!--監(jiān)聽(tīng)域名-->
NamevirtualHost www.benet.com:80   <!--監(jiān)聽(tīng)域名-->
<Directory "/var/www/">
        order deny,allow
        allow from all
</Directory>

<VirtualHost 192.168.100.10:80>     <!--虛擬主機(jī)IP地址和端口號(hào)-->
        DocumentRoot "/var/www/bdqn.com/"       <!--網(wǎng)站根目錄位置-->
        ServerName www.bdqn.com                     <!--網(wǎng)站域名-->
        ErrorLog "logs/www.bdqn.com.error_log"  <!--錯(cuò)誤日志-->
        CustomLog "logs/www.bdqn.com.access_log" common        <!--訪問(wèn)日志-->
</VirtualHost>
<VirtualHost 192.168.100.10:80>           <!--參考以上注釋-->
        DocumentRoot "/var/www/benet.com/"
        ServerName www.benet.com
        ErrorLog "logs/www.benet.com.error_log"
        CustomLog "logs/www.benet.com.access_log" common
</VirtualHost>
[root@centos01 ~]# systemctl restart httpd  <!--重啟httpd服務(wù)-->

8、客戶端訪問(wèn)驗(yàn)證

APache網(wǎng)站服務(wù)配置訪問(wèn)控制和構(gòu)建虛擬主機(jī)

APache網(wǎng)站服務(wù)配置訪問(wèn)控制和構(gòu)建虛擬主機(jī)

四、配置基于IP地址的虛擬主機(jī)

1、復(fù)制一個(gè)新的網(wǎng)卡

[root@centos01 ~]# cp /etc/sysconfig/network-scripts/ifcfg-ens32 /etc/sysconfig/network-scripts/ifcfg-ens32:1
[root@centos01 network-scripts]# vim ifcfg-ens32:1   <!--編輯32:1網(wǎng)卡-->
......                       <!--此處省略部分內(nèi)容-->
NAME=ens32:1      <!--修改名字-->
DEVICE=ens32:1    <!--修改名字-->
ONBOOT=yes
IPADDR=192.168.100.20            <!--編輯IP地址-->
NATEMASK=255.255.255.0
DNS1=192.168.100.10                <!--添加DNS-->
[root@centos01 ~]# systemctl restart network           <!--重啟網(wǎng)卡服務(wù)-->

2、配置基于IP地址的虛擬主機(jī)

[root@centos01 ~]# vim /usr/local/httpd/conf/extra/httpd-vhosts.conf    <!--創(chuàng)建獨(dú)立配置文件-->
NamevirtualHost www.bdqn.com:80        
NamevirtualHost www.benet.com:80             
<Directory "/var/www/">
        order deny,allow
        allow from all
</Directory>

<VirtualHost 192.168.100.10:80>            <!--bdqn.com是192.168.100.10-->
        DocumentRoot "/var/www/bdqn.com/"
        ServerName www.bdqn.com
        ErrorLog "logs/www.bdqn.com.error_log"
        CustomLog "logs/www.bdqn.com.access_log" common
</VirtualHost>
<VirtualHost 192.168.100.20:80>        <!--benet.com是192.168.100.20-->
        DocumentRoot "/var/www/benet.com/"
        ServerName www.benet.com
        ErrorLog "logs/www.benet.com.error_log"
        CustomLog "logs/www.benet.com.access_log" common
</VirtualHost>
[root@centos01 ~]# systemctl restart httpd           <!--重啟Httpd服務(wù)-->

3、客戶端訪問(wèn)驗(yàn)證

APache網(wǎng)站服務(wù)配置訪問(wèn)控制和構(gòu)建虛擬主機(jī)

APache網(wǎng)站服務(wù)配置訪問(wèn)控制和構(gòu)建虛擬主機(jī)

五、配置基于端口號(hào)的虛擬主機(jī)

1、修改Apache主配置文件

[root@centos01 ~]# vi /usr/local/httpd/conf/httpd.conf  <!-編輯主配置文件-->
     40 Listen 80
     41 Listen 8080   <!--添加8080端口號(hào)-->

2、配置基于端口的虛擬主機(jī)

[root@centos01 ~]# vim /usr/local/httpd/conf/extra/httpd-vhosts.conf    <!--創(chuàng)建獨(dú)立配置文件-->
NamevirtualHost www.bdqn.com:80
NamevirtualHost www.benet.com:80
<Directory "/var/www/">
        order deny,allow
        allow from all
</Directory>

<VirtualHost 192.168.100.10:80>    <!--bdqn.com是80端口-->
        DocumentRoot "/var/www/bdqn.com/"
        ServerName www.bdqn.com
        ErrorLog "logs/www.bdqn.com.error_log"
        CustomLog "logs/www.bdqn.com.access_log" common
</VirtualHost>
<VirtualHost 192.168.100.10:8080>        <!--benet.com是8080端口-->
        DocumentRoot "/var/www/benet.com/"
        ServerName www.benet.com
        ErrorLog "logs/www.benet.com.error_log"
        CustomLog "logs/www.benet.com.access_log" common
</VirtualHost>
[root@centos01 ~]# systemctl restart httpd  <!--重啟httpd服務(wù)-->

3、客戶端訪問(wèn)驗(yàn)證

APache網(wǎng)站服務(wù)配置訪問(wèn)控制和構(gòu)建虛擬主機(jī)

APache網(wǎng)站服務(wù)配置訪問(wèn)控制和構(gòu)建虛擬主機(jī)

—————— 本文至此結(jié)束,感謝閱讀 ——————

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

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI