web网站服务(二)

目录

 🍤httpd访问控制

 🍤实验步骤

 🥩客户机地址限制

 🥩用户授权限制

 🍖创建用户认证数据文件

 🍖添加用户授权配置

 🍖验证用户访问授权

 🍖构建虚拟web主机

 🥩基于域名的虚拟主机

 🥩基于IP地址的虚拟主机

 🥩基于端口的虚拟主机


httpd访问控制

        为了更好地控制对网站资源的访问,可以为特定的网站目录添加访问授权。

 🥓作用

控制对网站资源的访问

为特定的网站目录添加访问授权

常用访问控制方式

客户机地址限制

用户授权限制

🥓基于客户端地址的访问控制 

        使用Require配置项实现访问控制,按先后顺序限制 可用于<Location>、<Directory>、<Files>、<Limit>配置段中, 注:not表示拒绝

🥓用户授权限制

创建用户认证数据库

添加用户授权配置

验证用户访问授权

🥓虚拟Web主机

在同一台服务器中运行多个Web站点,其中每一个站点并不独立占用一台真正的计算机。

🥓httpd支持的虚拟主机类型

基于域名的虚拟主机

基于IP地址的虚拟主机

基于端口的虚拟主机

实验步骤

客户机地址限制

Require配置项的常见语法

Require all granted——表示允许所有主机访问。

Require all denied——表示拒绝所有主机访问。

Require local——表示仅允许本地主机访问。

Require [not] host <主机名或域名列表>

Require [not] ip <ip地址或网段列表>

 🍓注:not表示拒绝

        通常情况下,网站服务器是对所有客户机开放的,网页文档目录未做任何限制,因此使用的是Require all granted策略,表示允许从任何客户机访问,具体配置如下。

vim /usr/local/httpd/conf/httpd.conf
文本下搜索 
<Directory "/usr/local/httpd/htdocs">
 ......//省略部分内容
 Require all granted         //添加(默认有)
 </Directory>

        若只希望 禁止来自一个内网网段和一个IP地址。但允许其他任何主机访问,可以使用如下限制策略。

vim /usr/local/htpd/conf/httpd.conf
 搜索 <Directory "/usr/local/httpd/htdocs">
<RequireAll>                    //加
Require all granted
Require not ip 192.168.1.10 192.168.2.0/24       //添加要禁止的网段或主机
</RequireAll>                   //加
</Directory>

        未做路径优化的重启apachectl服务

 /usr/local/httpd/bin/apachectl restart

        重启后,未被授权的客户机访问网站目录时,将会拒接访问。

         因为本机地址为1.100,客户机1.10所以访问被拒绝。修改成1.0网段没有地址冲突的地址即可访问。

        修改地址后可以访问的默认网页

用户授权限制

        基于用户的访问控制包含认证(Authentication)和授权(Authorization)两个过程,是Apache允许指定用户使用用户名的密码访问特定资源的一种方式。

        httpd服务器支持使用摘要认证(Digest)和基本认证(Basic)两种方式。使用摘要认证需要在编译httod之前添加“--enable-auth-digest” 选项,但并不是所有的浏览器都支持摘要认证;而基本认证是httpd服务的基本功能,不需要预先配置特别选项。

创建用户认证数据文件

        httpd的基本认证通过校验用户名,密码组合来判断是否允许用户访问。使用专门的htpasswd工具程序,可以创建授权用户数据文件,并维护其中的用户账号。

        使用htpasswd工具时,必须指定用户数据文件的位置,添加“-c”选项表示新建此文件。

        创建zhang3用户,/.awspwd为存放目录,新密码输入两次。

 [root@localhost ~]# cd /usr/local/httpd
 [root@localhost httpd]# bin/htpasswd -c /usr/local/httpd/conf/.awspwd zhang3
 New password: 
 Re-type new password: 
 Adding password for user zhang3
 [root@localhost httpd]# cat /usr/local/httpd/conf/.awspwd 
 zhang3:$apr1$T1/SEmVK$k7VqIYih78oHFcfst3a.B/

        已创好/.awpwd目录后创建用户取消“-c”选项,创建li4用户

 [root@localhost httpd]# bin/htpasswd /usr/local/httpd/conf/.awspwd li4
 New password: 
 Re-type new password: 
 Adding password for user li4
 [root@localhost httpd]# cat /usr/local/httpd/conf/.awspwd 
 zhang3:$apr1$T1/SEmVK$k7VqIYih78oHFcfst3a.B/
 li4:$apr1$SLNy2tvP$H36ifUr/wsz.klI1cY1bt0

添加用户授权配置

        有了授权用户之后还需要修改httpd.conf 配置文件,在特定的目录区域中添加授权配置,以启用基本认证并配置允许哪些用户访问。例如,若只允许.awspwd 数据文件中的任何一用户访问网页,可以执行以下操作。

 🍓注:客户机地址限制的配置需要Require all granted改成Require all denied或者注释掉。

   <RequireAll>
# Require all granted                // 加#号注释掉,其他不用改
 Require not ip 192.168.1.10 192.168.2.0/24
</RequireAll>
[root@localhost ~]# vim /usr/local/httpd/conf/httpd.conf
 搜索此文件 <Directory "/usr/local/httpd/htdocs">
 ......省略部分
输入以下四行配置
authname "123.com"
authtype basic
authuserfile /usr/local/httpd/conf/.awspwd
require valid-user
 [root@localhost ~]# systemctl restart httpd.service 

上述配置文件内容中,相关配置项的含义如下:

authname:定义受保护的领域名称,该内容将在浏览器弹出的认证对话框中显示。

authtype:设置认证的类型,basic表示基本认证。

authuserfile:设置用于保存用户账号,密码的认证文件路径。

require valid-user:要求只有认证文件中的合法用户才能访问。

         🍓需要注意的是,用户访问授权与主机访问控制同时设置时,设置的主机访问控制优先生效。

验证用户访问授权

当再次访问网站的默认首页时,浏览器会首先弹出认证对话框。

构建虚拟web主机

基于域名的虚拟主机:相同IP,相同端口号,不同域名。

基于IP地址的虚拟主机: 不同IP相同端口。

基于端口的虚拟主机: 相同IP,相同域名,不同端口号。

基于域名的虚拟主机

  • 为虚拟主机提供域名解析

         🥠安装DNS

没有DNS需要安装,有的话可省略此部分

挂载系统盘安装源码包

[root@localhost ~]# mount /dev/cdrom /media
mount: /dev/sr0 写保护,将以只读方式挂载
[root@localhost ~]# cd /media/Packages/
[root@localhost Packages]# rpm -ivh bind-9.9.4-37.el7.x86_64.rpm bind-chroot-9.9.4-37.el7.x86_64.rpm 

主配置文件

 [root@localhost ~]# vim /etc/named.conf

配置如图,将红框中的两行删除

添加两个区域

zone "123.com" in {
        type master;
        file "123.com.zone";
};
zone "456.com" in {
        type master;
        file "456.com.zone";
};

区域数据1文件(正向)

[root@localhost ~]# vim /var/named/123.com.zone

文件内配置

$ttl 86400
@ in    soa     123.com.        admin.123.com. (
        201801
        3h
        15m
        1w
        1d
)
        in      ns      ns1.123.com.
ns1     in      a       192.168.1.100
www     in      a       192.168.1.100

区域数据2文件(正向)

[root@localhost ~]# vim /var/named/456.com.zone

文件内配置

$ttl 86400
@ in soa        456.com.      admin.456.com. (
        202253
        3h
        15m
        1w
        1d
)
        in      ns      ns1.456.com.
ns1     in      a       192.168.1.100
www     in      a       192.168.1.100

重启服务

systemctl   restart named 

 排错(OK直接跳过)

检查/etc/named.conf文件:

 named-checkconf  -z   /etc/named.conf

检查正向和反向数据文件:

named-checkzone  123.com  /var/named/123.com.zone

为每个虚拟web主机准备网站目录及网页文档。

[root@localhost ~]# mkdir -p /var/www/html/123com
[root@localhost ~]# mkdir -p /var/www/html/456com
[root@localhost ~]# echo "<h1>www.123.com</h1>" > /var/www/html/123com/index.html
[root@localhost ~]# echo "<h1>www.456.com</h1>" > /var/www/html/456com/index.html

添加虚拟主机配置

[root@localhost ~]# vim /usr/local/httpd/conf/extra/httpd-vhosts.conf 

 <VirtualHost *:80>                                   虚拟站点区域          
     ServerAdmin 123@.com                            邮箱
     DocumentRoot "/var/www/html/123com"             网站根目录 
     ServerName www.123.com                          完整名称(别名)
     ErrorLog "logs/www.123.com-error_log"           错误日志
     CustomLog "logs/www.123.com-access_log" common  访问日志
     <directory "/var/www/html">                     设置访问权限
     require all granted
     </directory>
 </VirtualHost>
 ​
 <VirtualHost *:80>
     ServerAdmin 456@.com
     DocumentRoot "/var/www/html/456com"
     ServerName www.456.com
     ErrorLog "logs/www.456.com-error_log"
     CustomLog "logs/www.456.com-access_log" common
     <directory "/var/www/html">
     require all granted
     </directory>
 </VirtualHost>

加载独立的配置文件

 [root@localhost ~]# vim /usr/local/httpd/conf/httpd.conf
 # nclude conf/extra/httpd-vhosts.conf   取消#注释

重启服务

 /usr/local/httpd/bin/apachectl restart

在本机访问虚拟web主机。注意,这里要在本地主机访问,如果在其他服务器需要修改本地hosts文件

基于IP地址的虚拟主机

        对于基于IP地址的虚拟主机,每个虚拟web主机各自使用不同的IP地址,但是都通过同一台httpd服务器对外提供web浏览服务。

虚拟机临时配置IP命令如下

[root@localhost ~]# ifconfig ens33:2 192.168.1.200
 [root@localhost ~]# vim /usr/local/httpd/conf/extra/httpd-vhosts.conf
 ​
 插入模式下网站1(不同地址相同端口)
 <VirtualHost *:80>改成<VirtualHost 192.168.1.100:80>
 ​        网站2 
<VirtualHost *:80>改成 <VirtualHost 192.168.1.200:80>       
 加载独立的配置文件
 [root@localhost ~]# vim /usr/local/httpd/conf/httpd.conf
 # nclude conf/extra/httpd-vhosts.conf   取消#注释
 [root@localhost ~]# systemctl restart httpd

在客户机上访问虚拟web主机

基于端口的虚拟主机

        基于端口的虚拟机通常只用于同一个web站点,其针对的网站名称、、IP地址往往都是相同的,但 通过不同的TCP端口来提供不同网页内容的服务入口。

        配置基于端口的虚拟web主机时,需要通过多个 Listen配置项来指定要监听的TCP端口号,每个虚拟web主机的VirtualHost配置中应同时指定IP地址和端口号。

          🍓特别注意的是基于端口的虚拟主机需要监听端口号,如Listen 80。

[root@localhost ~]# vim /usr/local/httpd/conf/extra/httpd-vhosts.conf 
 <VirtualHost 192.168.1.100:80>  加端口号
   ......
 ​
 <VirtualHost 192.168.1.100:8080>
   ......
#在最后面空白地方加,不要加在模块内
 Listen 80                       监听80端口
 Listen 8080                     监听8080端口

     加载独立的配置文件并重启

[root@localhost ~]# vim //usr/local/httpd/conf/httpd.conf
 # nclude conf/extra/httpd-vhosts.conf   取消#注释
 [root@localhost ~]# systemctl restart httpd

访问时,默认是80端口,第二个网站需要添加8080端口。

 

  • 4
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

大虾好吃吗

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值