Apache配置与应用

一:Apach连接保持

HTTP是属于应用层的面向对象协议,基于TCP协议之上的可靠传输。每次在进行HTTP连接之前,需要先进行TCP连接,在HTTP连接结束后要对TCP连接进行终止,每个TCP连接都需要进行三次握手与四次断开。HTTP协议不会对之前发生过的请求和响应进行管理,所以频繁地建立与关闭连接对于HTTP而言会消耗更多的内存与CPU资源。能不能允许通过同一个TCP连接发出多个请求,从而减少与多个连接相关的延迟,解决办法就是连接保持。
对于HTTP/1.1,就是尽量地保持客户端的连接,通过一个连接传送多个HTTP请求响应,对于客户端可以提高50%以上的响应时间,对于服务器可以降低资源开销。
Apache通过设置配置文件httpd-default.conf中相关的连接保持参数来开启与控制连接保持功能。

  • KeepAlive:决定是否打开连接保持功能,后面接OFF表示关闭,接ON表示打开,可以根据网站的并发请求量决定是否打开,即在高并发时打开连接保持功能,并发量不高时关闭此功能。
  • KeepAliveTimeout:表示一次连接多次请求之间的最大间隔时间,即两次请求之间超过该时间连接就会自动断开,从而避免客户端占用连接资源。
  • MaxKeepAliveRequests:用于设置在一次长连接中可以传输的最大请求数量,超过此最大请求数量就会断开连接,最大值的设置决定于网站中网页的内容,一般设置数量会多于网站中所有的元素。

二:Apache的访问控制

2.1:客户机地址限制

通过Require配置项,可以根据客户端的主机名或IP地址来决定是否允许客户端访问。在httpd服务主配置文件的<Location>、<Directory>、<Files>:、<Limit>:配置段中均可以使用Require配置项来控制客户端的访问。使用Require配置项时,需要设置客户端地址以构成完整的限制策略,地址形式可以是IP地址、网络地址、主机名或域名。当Require配置项之后为“a”时,表示匹配任意地址。限制策略的格式如下所示。

  • Require all granted:允许所有主机访问;
  • Require all denied:拒绝所有主机访问;
  • Require local:仅允许本地主机访问;
  • Require[not)host<主机名或域名列表>:允许或拒绝指定主机或域名访问;
  • Require[not]ip<IP地址或网段列表>:允许或拒绝指定IP地址网络访问。

定义限制策略时,多个不带“not”的Require配置语句之间是“或”的关系,即任意一条Require配置语句满足条件均可访问。若既出现了不带“not”的Require配置语句,又出现了带“not"的Require配置语句,则配置语句之间是“与”的关系,即同时满足所有Require配置语句才能访问。

反之,需要使用“仅拒绝"”的限制策略时,灵活使用Require与Require not配置语句设置拒绝访问策略,仅禁止一部分主机访问。在使用ot禁止访问时要将其置于<RequireAll><RequireAll>容器中,并在容器中设置相应的限制策略。例如,若只希望禁止来自两个内网网段192.168.0.0/24和192.168.1.0/24的主机访问,但允许其他任何主机访问,可以使用如下限制策略。

<Directory "/usr/local/httpd/htdocs/wwwroot">
    ......省略部分内容
         <RequireAll>
             Require all granted
             Require not ip192.168.0.0/24192.168.1.0/24
         </RequireAll>
</Directory>

当未被授权的客户机访问网站目录时,将会被拒绝访问。

2.2:用户授权限制 

htpd服务器支持使用摘要认证(Digest)和基本认证(Basic)两种方式。使用摘要认证需要在编译httpd之前添加“-enable-auth-digest'”选项,但并不是所有的浏览器都支持摘要认证;而基本认证是htpd服务的基本功能,不需要预先配置特别的选项。
基于用户的访问控制包含认证(Authentication)和授权(Authorization)两个过程。认证是指识别用户身份的过程,授权是指允许特定用户访问特定目录区域的过程。下面将以基本认证方式为例,添加用户授权限制。

1:创建用户认证数据文件

httpd的基本认证通过校验用户名、密码组合来判断是否允许用户访问。授权访问的用户账号需要事先建立,并保存在固定的数据文件中。使用专门的htpasswd工具程序,可以创建授权用户数据文件,并维护其中的用户账号。
使用htpasswd工具时,必须指定用户数据文件的位置,添加“-c”选项表示新建立此文件。例如,执行以下操作可以新建数据文件usr/local/httpd/conf/.awspwd,其中包含一个名为webadmin的用户信息。

[root@www]#cd /usr/local/httpd/
[root@www httpd]#bin/htpasswd -c /usr/local/httpd/conf/.awspwd webadmin
New password:                 //根据提示设置密码
Re-type new password:
Adding password for user webadmin
[root@ww httpd]#cat /usr/local/httpd/conf.awspwd                          //确认用户数据文件
webadmin:Sapr1$L53Ws/Y2$3L4xhs4zZKDbJb.9p1fNg

若省略“-c”选项,则表示指定的用户数据文件己经存在,用于添加新的用户或修改现有用户的密码

2:添加用户授权配置

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

(root@www~]#vim /usr/local/httpd/conf/httpd.conf
... ... //省略部分内容
<Directory "/usr/local/h甘pd /htdocs">
   ...... //省略部分内容
AuthName "DocumentRoot"
AuthType Basic
AuthUserFile /usr/local/httpd/conf/.awspwd
Require val id-user
</Directory>
[root@www~]#systemctl restart httpd           //重启服务使配置生效

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

  • AuthName: 定义受保护的领域名称, 该内容将在浏览器弹出的认证对话框中显示。
  • AuthType: 设置认证的类型, Basic 表示基本认证。
  • AuthUserFi le: 设置用千保存用户账号、密码的认证文件路径。
  • require valid-user: 要求只有认证文件中的合法用户才能访问。其中, valid-user 表示所有合法用户, 若只授权给单个用户, 可改为指定的用户名(如webadmin)

3 . 验证用户访问授权

当访问系统时,浏览器会首先弹出认证对话框。只有输入正确的用户名和密码后才能查看特定目录下的网站资源, 否则将拒绝访问。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值