博文目錄
1、Httpd服務的訪問控制
一、客戶機地址限制
二、用戶受權限制
2、構建虛擬Web主機
3、配置基於域名的虛擬主機
4、配置基於IP地址的虛擬主機
5、配置基於端口號的虛擬主機html
爲了更好地控制對網站資源的訪問。能夠爲特定的網站目錄添加訪問受權。主要分爲客戶機地址限制和用戶受權限制,這兩種訪問控制方式都應用於httpd.conf配置文件中的目錄區域範圍內。web
經過Require配置項,能夠根據主機的主機名或IP地址來決定是否容許客戶端訪問。在httpd服務器的主配置文件的<Location>、<Directory>、<Files>、<Limit>配置段中都可以使用Require配置項來控制客戶端的訪問。地址的形式能夠是IP地址、網絡地址、主機名和域名,使用名稱「all」時表示任意地址。限制策略的經常使用格式以下所示:數據庫
- Require all granted:表示容許全部主機訪問。
- Require all denied:表示拒絕全部主機訪問。
- Require local:表示僅本地主機訪問。
- Require [not] host <主機名或域名列表>:表示容許或拒絕指定主機或域訪問。
- Require [not] ip <IP地址或網段列表>:表示容許或拒絕指定IP地址或網段訪問。
定義限制策略時,多個不帶not的require配置語句之間是或的關係,即任意一條require配置語句就能夠訪問,若即有不帶not的require配置語句,又出現了帶not的require配置語句,則語句之間是與的關係,即同時知足全部require配置語句纔可訪問。
具體配置以下:
作一個策略,僅容許ip地址爲192.168.100.101的主機可以訪問/usr/local/httpd/htdocs網頁目錄下的內容,則策略以下(進入網站主配置文件httpd.conf後,在末行模式下輸入/Directory,按回車鍵查找到相應的位置):apache
<Directory "/usr/local/httpd/htdocs"> ................ <!--省略部份內容--> Require ip 192.168.100.101 <!--僅容許192.168.100.101的主機訪問網站服務--> </Directory>
配置完成重啓服務,192.168.100.101的客戶端就能夠訪問了。vim
反之,須要使用「僅拒絕」的限制策略時,靈活使用Require與Require not配置語句設置拒絕策略,只禁止一部分主機訪問。在使用not禁止訪問時要將其置於<RequireALL></RequireALL>容器中,並在容器中指定相應的限制策略。
具體配置以下:centos
<Directory "/usr/local/httpd/htdocs"> ................ <!--省略部份內容--> <RequireAll> Require all granted Require not ip 192.168.100.0/24 192.168.200.0/24 <!--拒絕100.0/24和200.0/24網段訪問,容許其餘任何主機訪問--> </RequireAll> </Directory>
也能夠經過如下方式來限制:瀏覽器
<Directory "/usr/local/httpd/htdocs"> ................ <!--省略部份內容--> Deny from 192.168.100.0/24 192.168.200.0/24 <!--拒絕100.0/24和200.0/24網段訪問,容許其餘任何主機訪問--> </Directory>
基於用戶的訪問控制包含認證和受權兩個過程,是Apache容許指定用戶使用用戶名和密碼訪問特定資源的一種方式。httpd服務器支持使用摘要認證(Digest)和基本認證(Basic)兩種方式。使用摘要認證的話須要在編譯http以前添加「--enable-auth-digest」選項,但並非全部的瀏覽器都支持摘要認證,因此不推薦使用;而基本認證是httpd服務的基本功能,不須要預先配置特別的選項。服務器
1)建立用戶認證數據文件網絡
[root@centos01 ~]# /usr/local/httpd/bin/htpasswd -c /usr/local/httpd/htdocs/.password admin <!--#使用 htpasswd工具建立用戶,該用戶與系統用戶無關,.password文件以.開頭,表示爲隱藏目錄,該 目錄默認不存在,因此要加-c選項,在之後須要添加用戶時,不能加-c選項, 不然會覆蓋原來的內容--> New password: <!--輸入密碼--> Re-type new password: <!--確認密碼--> Adding password for user admin <!--提示添加成功-->
查看用戶是否添加:ide
[root@localhost httpd]# cd /usr/local/httpd/ <!--切換至網站安裝根目錄--> [root@localhost httpd]# cat conf/.password admin:oVc8B0TaIVv0s <!--用戶admin的信息-->
2)修改Apache主配置文件加載身份驗證
[root@centos01 ~]# vi /usr/local/httpd/conf/httpd.conf <!--編輯主配置文件--> ....... <!--此處省略部份內容--> AuthName "Default" <!--定義訪問域的名字--> AuthType Basic <!--基自己份驗證--> AuthuserFile /usr/local/httpd/htdocs/.password <!--驗證數據庫位置--> Require valid-user <!--通過帳戶密碼驗證的合法帳戶能夠訪問--> </Directory>
3)重啓apache服務
[root@centos01 ~]# systemctl restart httpd <!--重啓httpd服務-->
客戶端訪問會出現提示框,輸入帳戶密碼就能夠訪問了,須要注意的是,用戶訪問受權與主機訪問控制同時設置時,設置的主機訪問控制優先生效。因此在進行用戶受權限制時,須要刪除掉其中的require語句。要否則,用戶訪問受權不會生效。
虛擬Web主機指的是在同一臺服務器中運行多個Web站點,其中的每一個站點實際上並不獨立佔用整個服務器,所以被稱爲「虛擬」Web主機。經過虛擬Web主機服務能夠充分利用服務器的硬件資源,從而大大下降網站構建及運行成本。使用httpd能夠很是方便地構建虛擬主機服務器,只須要運行一個httpd服務就可以同時支撐大量的Web站點。httpd支持的虛擬主機類型包括一下三種:
- 基於域名:爲每一個虛擬主機使用不一樣的域名,可是其對應的IP地址是相同的。這是使用最爲廣泛的虛擬Web主機類型。
基於域名:爲每一個虛擬主機使用不一樣的域名,可是其對應的IP地址是相同的。這是使用最爲廣泛的虛擬Web主機類型。- 基於IP地址:爲每一個虛擬主機使用不一樣的域名,且各自對應的IP地址也 不相同。這種方式須要爲服務器配備多個網絡接口,所以應用並非很是普遍。
- 基於端口:爲每一個虛擬主機使用不一樣的域名,IP地址來區分不一樣的站點內容,而是使用了不一樣的TCP端口號,所以用戶在瀏覽不一樣的虛擬站點時須要同時指定端口號才能訪問。
DNS自行搭建,若是有不明白的能夠參考博文:CentOS7簡單搭建DNS服務
下面不在進行詳細的解釋。
[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正向解析區域--> $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正向解析區域--> 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 <!--編輯網卡--> …… <!—省略部份內容--> DNS1=192.168.100.10 <!--添加DNS--> [root@centos01 ~]# systemctl restart network <!--重啓網卡服務--> [root@centos01 ~]# systemctl restart named <!--重啓DNS服務-->
爲每一個虛擬web主機準備網站目錄及網頁文檔。爲了方便測試,分別爲每一個虛擬web主機提供包含不一樣的首頁文件:
[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 <!--刪除該行前面的#號-->
[root@centos01 ~]# vim /usr/local/httpd/conf/extra/httpd-vhosts.conf <!--建立獨立的配置文件--> NameVirtualHost 192.168.100.10:8 <!--虛擬主機監聽的IP地址,默認是*表示監聽全部--> <Directory "/var/www/"> <!--虛擬站點根目錄--> order deny,allow <!--先拒絕後容許訪問--> allow from all <!--容許全部人訪問--> </Directory>
[root@centos01 ~]# vim /usr/local/httpd/conf/extra/httpd-vhosts.conf 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> <!--虛擬主機IP地址和端口號--> 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: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服務-->
一、複製一個新的網卡
[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網卡--> ...... <!--此處省略部份內容--> 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 <!--重啓網卡服務-->
[root@centos01 ~]# vim /usr/local/httpd/conf/extra/httpd-vhosts.conf <!--建立獨立配置文件--> 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服務-->
[root@centos01 ~]# vi /usr/local/httpd/conf/httpd.conf <!-編輯主配置文件--> 40 Listen 80 41 Listen 8080 <!--添加8080端口號-->
[root@centos01 ~]# vim /usr/local/httpd/conf/extra/httpd-vhosts.conf <!--建立獨立配置文件--> 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服務-->
—————— 本文至此結束,感謝閱讀 ——————