APache網站服務配置訪問控制和構建虛擬主機

博文目錄
1、Httpd服務的訪問控制
一、客戶機地址限制
二、用戶受權限制
2、構建虛擬Web主機
3、配置基於域名的虛擬主機
4、配置基於IP地址的虛擬主機
5、配置基於端口號的虛擬主機html

1、Httpd服務的訪問控制

爲了更好地控制對網站資源的訪問。能夠爲特定的網站目錄添加訪問受權。主要分爲客戶機地址限制和用戶受權限制,這兩種訪問控制方式都應用於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語句。要否則,用戶訪問受權不會生效。

2、構建虛擬Web主機

虛擬Web主機指的是在同一臺服務器中運行多個Web站點,其中的每一個站點實際上並不獨立佔用整個服務器,所以被稱爲「虛擬」Web主機。經過虛擬Web主機服務能夠充分利用服務器的硬件資源,從而大大下降網站構建及運行成本。使用httpd能夠很是方便地構建虛擬主機服務器,只須要運行一個httpd服務就可以同時支撐大量的Web站點。httpd支持的虛擬主機類型包括一下三種:

  • 基於域名:爲每一個虛擬主機使用不一樣的域名,可是其對應的IP地址是相同的。這是使用最爲廣泛的虛擬Web主機類型。
    基於域名:爲每一個虛擬主機使用不一樣的域名,可是其對應的IP地址是相同的。這是使用最爲廣泛的虛擬Web主機類型。
  • 基於IP地址:爲每一個虛擬主機使用不一樣的域名,且各自對應的IP地址也 不相同。這種方式須要爲服務器配備多個網絡接口,所以應用並非很是普遍。
  • 基於端口:爲每一個虛擬主機使用不一樣的域名,IP地址來區分不一樣的站點內容,而是使用了不一樣的TCP端口號,所以用戶在瀏覽不一樣的虛擬站點時須要同時指定端口號才能訪問。

3、配置基於域名的虛擬主機

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服務-->

三、客戶端解析域名

APache網站服務配置訪問控制和構建虛擬主機

四、爲虛擬機準備網頁文檔

爲每一個虛擬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服務-->

八、客戶端訪問驗證

APache網站服務配置訪問控制和構建虛擬主機

APache網站服務配置訪問控制和構建虛擬主機

4、配置基於IP地址的虛擬主機

一、複製一個新的網卡

[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           <!--重啓網卡服務-->

二、配置基於IP地址的虛擬主機

[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服務-->

三、客戶端訪問驗證

APache網站服務配置訪問控制和構建虛擬主機

APache網站服務配置訪問控制和構建虛擬主機

5、配置基於端口號的虛擬主機

一、修改Apache主配置文件

[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服務-->

三、客戶端訪問驗證

APache網站服務配置訪問控制和構建虛擬主機

APache網站服務配置訪問控制和構建虛擬主機

—————— 本文至此結束,感謝閱讀 ——————

相關文章
相關標籤/搜索