您好,登錄后才能下訂單哦!
博文目錄
一、Httpd服務(wù)的訪問(wèn)控制
1、客戶機(jī)地址限制
2、用戶授權(quán)限制
二、構(gòu)建虛擬Web主機(jī)
三、配置基于域名的虛擬主機(jī)
四、配置基于IP地址的虛擬主機(jī)
五、配置基于端口號(hào)的虛擬主機(jī)
為了更好地控制對(duì)網(wǎng)站資源的訪問(wèn)??梢詾樘囟ǖ木W(wǎng)站目錄添加訪問(wèn)授權(quán)。主要分為客戶機(jī)地址限制和用戶授權(quán)限制,這兩種訪問(wèn)控制方式都應(yīng)用于httpd.conf配置文件中的目錄區(qū)域范圍內(nèi)。
通過(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>
基于用戶的訪問(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ì)生效。
虛擬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)。
DNS自行搭建,如果有不明白的可以參考博文:CentOS7簡(jiǎn)單搭建DNS服務(wù)
下面不在進(jìn)行詳細(xì)的解釋。
[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
[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ù)-->
為每個(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
[root@centos01 ~]# vi /usr/local/httpd/conf/httpd.conf <!--編輯主配置文件-->
390 # Virtual hosts
391 Include conf/extra/httpd-vhosts.conf <!--刪除該行前面的#號(hào)-->
[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>
[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ù)-->
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ù)-->
[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ù)-->
[root@centos01 ~]# vi /usr/local/httpd/conf/httpd.conf <!-編輯主配置文件-->
40 Listen 80
41 Listen 8080 <!--添加8080端口號(hào)-->
[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ù)-->
—————— 本文至此結(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)容。