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 granted
AuthName " DocumentRoot "
AuthType Basic
AuthUserFile /usr/local/httpd/conf/.awspwd
Require 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.com
DocumentRoot "/var/www/html/benetcom"
ServerName benet.com
ErrorLog "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.com
DocumentRoot "/var/www/html/accpcom"
ServerName accp.com
ErrorLog "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.com
DocumentRoot "/var/www/html/benetcom"
ServerName benet.com
ErrorLog "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.com
DocumentRoot "/var/www/html/accpcom"
ServerName accp.com
ErrorLog "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.com
DocumentRoot "/var/www/html/benetcom"
ServerName benet.com
ErrorLog "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.com
DocumentRoot "/var/www/html/accpcom"
ServerName accp.com
ErrorLog "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 //重启服务