1、客戶機地址限制。
Require all granted:表示允許所有主機訪問。
Require all denied:表示拒絕所有主機訪問。
Require local:表示僅允許本地主機訪問。
Require [not] host <主機名或域名列表>:表示允許或拒絕指定主機或域訪問。
Require [not] ip<ip ip地址或網段列表>:表示允許或拒絕指定IP地址或網段訪問。
????????通常情況下,網站服務器是對所有客戶機開放的,網頁文檔目錄并未做任何限制,因此使用的是"Require all granted"策略,表示允許任何客戶機訪問。配置文件路徑:[ /usr/local/httpd/conf/httpd.conf ]
? ? ? ? 定義限制策略時,多個不帶not的Require配置語句之間是"或"的關系,即任意一條Require配置語句滿足條件均可以訪問。
? ? ? ? 若只希望IP地址為192.168.136.1的主機能夠訪問/usr/local/httpd/htdocs網頁目錄下的內容,則需要配置以下內容。配置文件路徑:[ /usr/local/httpd/conf/httpd.conf ]
? ? ? ? 若希望禁止網段訪問,需要修改以下配置
????????當未被授權的客戶機訪問時,將會被拒絕訪問,注意:修改配置文件后均需要重啟服務
2、 用戶授權限制。
? ? ? ? httpd服務支持使用摘要認證(Digest)和基本認證(Basic)兩種方式,使用摘要認證需要在編譯httpd之前添加"--enable-auth-digest"選項。
2.1、創建用戶認證數據文件。
????????httpd的基本認證通過校驗用戶名、密碼組合來判斷是否允許用戶訪問。授權訪問的用戶賬戶需要事先建立,并保存在固定的數據文件中。使用專門的htpasswd工具程序,可以創建授權用戶數據文件
[root@yang ~]# cd /usr/local/httpd/##使用/bin/目錄下的執行文件htpasswd創建一個名為webadmin的用戶,并且存放在.awspwd的隱藏文件中
[root@yang httpd]# bin/htpasswd -c /usr/local/httpd/conf/.awspwd webadmin
New password:
Re-type new password:
Adding password for user webadmin##查看.awspwd隱藏文件中的內容
[root@yang httpd]# cat /usr/local/httpd/conf/.awspwd
webadmin:$apr1$71qWzdG2$FKS/43H0XO4GQxyCkfCok1
? ? ? ? 因為上面創建webadmin的時候也創建好了.awspwd隱藏文件,所有下次創建用戶時,就不需要"-c"選項了
[root@yang httpd]# bin/htpasswd /usr/local/httpd/conf/.awspwd bdqn
New password:
Re-type new password:
Adding password for user bdqn[root@yang httpd]# cat /usr/local/httpd/conf/.awspwd
webadmin:$apr1$71qWzdG2$FKS/43H0XO4GQxyCkfCok1
bdqn:$apr1$9uU9mL67$ieD7/J6O.zPmU8GeQtVs11
2.2、添加用戶授權配置。
? ? ? ? 有了授權用戶賬戶后,還需要修改httpd.conf配置文件,在特定的目錄區域中添加授權配置。
[root@yang ~]# vim /usr/local/httpd/conf/httpd.conf <Directory "/usr/local/httpd/htdocs">Require all grantedAuthName " DocumentRoot "AuthType BasicAuthUserFile /usr/local/httpd/conf/.awspwdRequire valid-user
</Directory>[root@yang ~]# systemctl restart httpd //重啟服務
AuthName:定義受保護的領域名稱,該內容將在瀏覽器彈出的認證對話框中顯示。
AuthType:設置認證的類型,Basic表示基本認證。
AuthUserFile:設置用于保存用戶賬號,密碼的認證文件路徑。
Require valid-user:要求只有認證文件中的合法用戶才能訪問。其中,valid—user表示所有
?注意:主機訪問控制中所允許的主機可以直接訪問網站,不需要用戶授權。主機訪問控制中所禁止的主機則不可以直接訪問網站,需要進行用戶授權。
3、構建虛擬Web主機。?
? ? ? ? 虛擬Web主機指的是在同一臺服務器中允許多個Web站點,其中的每個站點實際上并不獨立占用整個服務器。? ? ? ? ? ? ? ?
? ? ? ? 使用httpd可以非常方便地構建虛擬主機服務器,只需要運行一個httpd服務就能夠同時支撐大量的Web站點。httpd支持的虛擬主機類型包括三種:基于域名、基于IP地址、基于端口
3.1、為虛擬主機提供域名解析。
3.2、 為虛擬主機準備網頁文檔。
? ? ? ??為每個虛擬Web主機準備網站目錄即網頁文檔以方便測試。在/var/www/html目錄下創建兩個子文件夾作為網站根目錄。
[root@yang ~]# mkdir -p /var/www/html/benetcom
[root@yang ~]# mkdir -p /var/www/html/accpcom[root@yang ~]# echo "<h1>www.benet.com</h1>" > /var/www/html/benetcom/index.html
[root@yang ~]# echo "<h1>www.accp.com</h1>" > /var/www/html/benetcom/index.html
3.3、添加虛擬主機配置。
[root@yang ~]# vim /usr/local/httpd/conf/extra/httpd-vhosts.conf <VirtualHost *:80>ServerAdmin webmaster@benet.comDocumentRoot "/var/www/html/benetcom"ServerName benet.comErrorLog "logs/www.benet.com-error_log"CustomLog "logs/www.benet.com-access_log" common<Directory "/var/www/html">Require all granted</Directory>
</VirtualHost><VirtualHost *:80>ServerAdmin webmaster@accp.comDocumentRoot "/var/www/html/accpcom"ServerName accp.comErrorLog "logs/www.accp.com-error_log"CustomLog "logs/www.accp.com-access_log" common<Directory "/var/www/html">Require all granted</Directory>
</VirtualHost>
修改httpd.conf配置文件
[root@yang ~]# vim /usr/local/httpd/conf/httpd.conf
重啟服務使新配置生效
[root@yang ~]# systemctl restart httpd
3.4、在客戶機中訪問虛擬Web主機。
修改客戶機的DNS為服務器的IP地址
3.5、基于IP地址的虛擬主機。
[root@localhost ~]# vim /usr/local/httpd/conf/extra/httpd-vhosts.conf <VirtualHost 192.168.136.24:80>ServerAdmin webmaster@benet.comDocumentRoot "/var/www/html/benetcom"ServerName benet.comErrorLog "logs/www.benet.com-error_log"CustomLog "logs/www.benet.com-access_log" common<Directory "/var/www/html">Require all granted</Directory>
</VirtualHost><VirtualHost 192.168.136.55:80>ServerAdmin webmaster@accp.comDocumentRoot "/var/www/html/accpcom"ServerName accp.comErrorLog "logs/www.accp.com-error_log"CustomLog "logs/www.accp.com-access_log" common<Directory "/var/www/html">Require all granted</Directory>
</VirtualHost>[root@localhost ~]# systemctl restart httpd.service //重啟服務
5.4、基于端口的虛擬主機。
<VirtualHost 192.168.136.55:8001>ServerAdmin webmaster@benet.comDocumentRoot "/var/www/html/benetcom"ServerName benet.comErrorLog "logs/www.benet.com-error_log"CustomLog "logs/www.benet.com-access_log" common<Directory "/var/www/html">Require all granted</Directory>
</VirtualHost><VirtualHost 192.168.136.55:8000>ServerAdmin webmaster@accp.comDocumentRoot "/var/www/html/accpcom"ServerName accp.comErrorLog "logs/www.accp.com-error_log"CustomLog "logs/www.accp.com-access_log" common<Directory "/var/www/html">Require all granted</Directory>
</VirtualHost>Listen 8001
Listen 8000[root@localhost ~]# systemctl restart httpd.service //重啟服務