Apache 配置与应用

Apache HTTP Server之所以受到众多企业的青睐,得益于其代码开源、跨平台、功能模块化、可灵活定制等诸多优点,不仅性能稳定,在安全性方面的表现也十分出色。
 Apache 连接保持
        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的访问控制
        为了更好地控制对网站资源的访问,可以为特定的网站目录添加访问授权。本节将分别介绍客户机地址限制、用户授权限制,这两种访问控制方式都应用于httpd.conf配置文件中的目录区域<Directory 目录位置>......</Directory>范围内。
客户机地址限制
        通过Require配置项,可以根据客户端的主机名或IP地址来决定是否允许客户端访问。在httpd服务主配置文件的<Location>、<Directory>、<Files>、<Limit>配置段中均可以使用Require 配置项来控制客户端的访问。使用Require  配置项时,需要设置客户端地址以构 成完整的限制策略,地址形式可以是IP 地址、网络地址、主机名或域名。当Require 配置项之后为“all ”时,表示匹配任意地址。限制策略的格式如下所示。
Require  all  granted: 允许所有主机访问;
Require  all  denied: 拒绝所有主机访问;
Require    local: 仅允许本地主机访问;
Require   [not]host <主机名或域名列表> :允许或拒绝指定主机或域名访问;
Require    [not]ip <IP地址或网段列表> : 允许或拒绝指定 IP 地址网络访问。
        通常情况下,网站服务器是对所有客户机开放的,网页文档目录并未做任何限制,因此使用的是“Require all granted”的策略,表示允许从任何客户机访问。
        定义限制策略时,多个不带“not”的Require配置语句之间是“或”的关系,即任意一条Require配置语句满足条件均可访问。若既出现了不带“not”的Require 配置语句,又出现了带“not”的Require 配置语句,则配置语句之间是“与”的关系,即同时满足所有Require 配置语句才能访问。
        需要使用“仅允许”的限制策略时,应使用Require 配置语句明确设置允许策略,只允许一部分主机访问。例如,若只希望IP 地址为173.17.17.2  的主机能够访问,目录区域应做如下设置。

<Directory "/usr/local/httpd/htdocs/mwwtest">
.....//省略部分内容
Require ip 173.17.17.2
</Directory>


        反之,需要使用“仅拒绝”的限制策略时,灵活使用Require 与Require   not 配置语句设置拒绝访问策略,仅禁止一部分主机访问。在使用not 禁止访问时要将其置于<RequireAll></RequireAll> 容器中,并在容器中设置相应的限制策略。
用户授权限制
        httpd 服务器支持使用摘要认证(Digest) 和基本认证(Basic) 两种方式。使用摘要认证需要在编译httpd之前添加“-enable-auth-digest  ”选项,但并不是所有的浏览器都支持摘要认证;而基本认证是 httpd服务的基本功能,不需要预先配置特别的选项。
        基于用户的访问控制包含认证(Authentication)和授权(Authorization)两个过程。认证是指识别用户身份的过程,授权是指允许特定用户访问特定目录区域的过程。下面将以基本认证方式为例,添加用户授权限制。
1. 创建用户认证数据文件
        httpd的基本认证通过校验用户名、密码组合来判断是否允许用户访问。授权访问的用 户账号需要事先建立,并保存在固定的数据文件中。使用专门的 htpasswd  工具程序,可以创建授权用户数据文件,并维护其中的用户账号。
        使用htpasswd 工具时,必须指定用户数据文件的位置,添加“-c”选项表示新建立此文件。
        若省略“-c” 选项,则表示指定的用户数据文件已经存在,用于添加新的用户或修改现有用户的密码。例如,需要向.awspwd 数据文件中添加一个新用户kcce  时,可以执行以下操作 。

[root@www httpd]#bin/htpasswd /usr/local/httpd/confl.awspwd kcce


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

[root@www~]#vim lusr/local/httpd/conf/httpd.conf
……./省略部分内容
<Directory "/usr/local/httpd/htdocs">
.../省略部分内容
AuthName "DocumentRoot"
AuthType Basic
AuthUserFile lusr/local/httpd/confl.awspwd
Require valid-user
</Directory>
[root@www~]#    systemctI   restart   httpd     //重启服务使配置生效


在上述配置内容中,相关配置项的含义如下。
>   AuthName:     定义受保护的领域名称,该内容将在浏览器弹出的认证对话框中显示。
>   AuthType:  设置认证的类型,Basic表示基本认证。
>  AuthUserFile:     设置用于保存用户账号、密码的认证文件路径。
>   require   valid-user: 要求只有认证文件中的合法用户才能访问。其中,valid-user    表示
所有合法用户,若只授权给单个用户,可改为指定的用户名(如webadmin )。
3. 验证用户访问授权
        当访问系统时,浏览器会首先弹出认证对话框。只有输入正确的用户名和密码后才能查看特定目录下的网站资源,否则将拒绝访问。
 Apache日志分割
        随着网站的访问量越来越大,默认情况下Apache 服务器产生的单个日志文件也会越来 越大,如果不对日志进行分割,那么如果日志文件占用磁盘空间很大的话势必会将整个日志文件删除,这样也丢失了很多对网站比较宝贵的信息,而这些日志可以用来进行访问分析、网络安全监察、网络运行状况监控等。
        另外,如果服务器遇到故障时,运维人员要打开日志文件进行分析,打开的过程会消耗 很长时间,也势必会增加处理故障的时间。因此管理好这些海量的日志对网站的意义很大,我们会将Apache 的日志进行按每天的日期自动分割。下面介绍两种方法均可实现。
1.Apache   自 带rotatelogs    分割工具
        首先,将Apache主配置文件httpd.conf   打开,配置网站的日志文件转交给rotatelogs分割处理。

[root@www ~]#mkdirIvarllog/httpd/
[root@www ~]#vim lusr/local/httpd/conf/httpd.conf
.…./省略部分内容
ErrorLog "/usr/local/bin/rotatelogs -I INar/log/httpd/error_%Y%m%d.log 86400"
CustomLog "/usr/local/bin/rotatelogs -I Ivar/log/httpd/access_%Y%m%d.log 86400" combined
[root@www ~]# systemctl restart httpd


        其中ErrorLog 行是错误日志,-l表示使用本地时间代替GMT 时间作为时间基准。需要注意的是在一个改变GMT 偏移量(比如夏令时)的环境中用-l会导致不可预料的结果。
        CustomLog  行是定义访问日志格式,86400  表示一天,即每天生成一个新的日志文件。
        重启Apache服务,查看日志文件是否已经按日期分割。
2. 使用第三方工具cronolog  分 割
        除了Apache自 带rotatelogs分割工具,也可使用第三方工具cronolog 对 Apache日 志进行分割,具体操作如下所示。
(1)编译安装cronolog工具

[root@www~]#tar zxvf cronolog-1.6.2.tar.gz
[root@www ~]#cd cronolog-1.6.2
[root@www cronolog-1.6.2]#.Iconfigure
[root@www cronolog-1.6.2]#make &&make install


(2)设置cronolog工具工具分割apache 日 志

[root@www ~]#vim /usr/local/httpd/conf/httpd.conf
ErrorLog"/usr/local/sbin/cronolog/var/log/httpd/www.kgc.com-error_%Y%m%d.log"  
CustomLog "/usr/local/sbin/cronolog Ivar/log/httpd/www.kgc.com-access_%Y%m%d.log" combined
[root@www ~]#systemctl restart httpd


AWStats日志分析
        在httpd服务器的访问日志文件access_log    中,记录了大量的客户机访问信息,通过 分析这些信息,可以及时了解Web 站点的访问情况,如每天或特定时间段的访问IP 数量,点击量最大的页面等。
部署 AWStats  分析系统
        AWStats是使用Perl语言开发的一款开源日志分析系统,它不仅可用来分析Apache网站服务器的访问日志,也可以用来分析Samba 、Vsftpd 、IIS 等服务的日志信息。结合crond等计划任务服务,可以对不断增长的日志内容定期进行分析。
        AWStats 的软件包可以从官方网站下载。下面以awstats-7.7.tar.gz 软件包为例,介绍为Web 站点www.kcg.com添加AWStats 日志分析系统的过程。
1 . 安 装AWStats 软件包
        Awstats 软件包的安装非常简单,只需将软件包解压到 httpd 服务器中的/usr/local/目 录下即可。

[root@www ~]#tarzxf awstats-7.7.tar.gz
[root@www ~]#mv awstats-7.7 /usrllocallawstats


2. 为要统计的站点建立配置文件
        AWStats 系统支持统计多个网站的日志文件,通常以网站名称来区分不同的站点。因此,在执行日志文件分析之前,需要为每个Web站点建立站点统计配置文件,借助于AWStats系统提供的awstats_configure.pl脚本可以简化创建过程。
        首先切换到awstats/tools目录下,并执行其中的awstats_configure.pl脚本。

[root@www ~]#cd /usr/locallawstats/tools/
[root@www tools]#chmod +xawstats_configure.pl
[root@www tools]#.lawstats_configure.pl


        之后将会进入一个交互式的配置过程,将会检查awstats的安装目录、httpd服务的配置文件路径等系统环境,并提示用户指定站点名称、设置配置文件路径。
(1)指定httpd 主配置文件的路径
        配置脚本将查找并识别httpd服务的主配置文件,以便自动添加相关配置内容。如果未能在常见的安装路径中找到相关配置内容,则用户需要根据提示进行手工指定。
(2)为指定 We b 站点创建配置文件
        根据提示继续选择 “y”   以创建站点配置文件,并指定要统计的目标网站名称、站点配置文件的存放位置(默认为/etclawstats  )。
(3)后续配置工作
        后续配置工作接下来将会尝试重启httpd服务(支持使用/sbin/service httpd restart或  /bin/systemctl restart  httpd.servic命令重启,需要有相关脚本,否则手动重启apache  服务),然后设 置 cron  计 划 任 务 ( 7 . 6 版 本 尚 不 支持 , 需 要 根 据 提 示 使用/usr/local/awstats/tools/awstats_updateall.pl now 命令,自行设置任务计划),按两次Enter键退出配置工具。
        Apache   2.4以上版本,因为重新定义了访问权限,所以需要将自动生成的awstats   访问权限进行相应修改。同时,加载CGI 模块。

[root@www ~]#vim lusrlocal/httpd/conf/httpd.conf
ErrorLog "logs/error_log"
CustomLog "logs/access_log"combined
<lfModule !mpm_prefork_module>
LoadModule cgid_module modules/mod_cgid.so
</lfModule>
<lfModule mpm_prefork_module>
LoadModule cgi_module modules/mod_cgi.so
</IfModule>
…
<Directory "/usr/locallawstats/wwwroot">
Options None
AllowOverride None
#       Order allow,deny
#      Allow from all
Require all granted   
</Directory>
[root@www ~]#systemctl restart httpd


        根据上述设置过程,为网站www.kgc.com 新建立的站点统计配置文件将存放到/etc/awstats目录下,文件名称为awstats.www.kgc.com.conf。若还需要统计其他Web  站 点的日志,可以执行awstats_configure.pl 脚本创建新的配置文件。
3. 修改站点统计配置文件
        为站点 www.kgc.com 建立好配置文件以后,还需要对其做进一步的修改。修改的内容主要包括指定要分析的Web  日志文件和指定用来存放统计数据的目录。

[root@www~]#vim letclawstats/awstats.www.kgc.com.conf
LogFile="/usr/local/httpd/logs/access_log"
DirData="Ivarlib/awstats"
...../省略部分内容
[root@www ~]#mkdir Ivar/lib/awstats


        其 中 ,LogFile用来指定日志路径,应设置Web 日志文件的实际位置;DirData 用来指定数据目录,可以采用默认值,但需要创建指定的目录(Ivar/lib/awstats) 。
4 . 执 行 日 志 分 析 , 并 设 置cron 计 划 任 务
        使用AWStats 提供的awstats_updateall.pl 脚本,可以更新所有站点(根据站点配置文件)的日志统计数据。执行该脚本时,系统将会自动分析新增的日志内容,并将分析结果更新到统计数据库中。

[root@www ~]#cd /usr/local/awstats/tools/
[root@www tools]#chmod +x awstats_updateall.pl
[root@www  tools]#./awstats_updateall.pl now


        由于Web 日志文件的内容是在不断更新的,为了及时反馈网站访问情况,日志分析工作也需要定期、自动地执行。通过crond 服务可设置计划任务,一般建议每五分钟执行一次日志分析任务。

[root@www~]#crontab-e
*/5 * * * * /usr/local/awstats/tools/awstats_updateall.pl now


访问AWStats分析系统
        访问站点 http://192.168.9.158/awstats/awstats.pl?config=www.kgc.com后,即可看到AWStats 日志分析系统的统计页面,该页面分别按访问时间、用户来源、所用浏览器等类 别列出各种详细的网站访问情况。若此处访问出现403 Forbidden错误,关闭selinux即可正常访问。
        在访问 AWStats 系统时,需要指定awstats目录、脚本位置、统计目标等信息,这样 既不便于记忆,输入时也比较麻烦。为了简化操作,可以在Web  根目录下建立一个自动跳转 的HTML网页。例如,执行以下操作后,用户只要访问http:/Mww.kgc.com/awb.html,即可自动跳转到www.kgc.com  站点的AWStats 日志分析页面。

[root@www ~]#vim Ivarlwww/html/awb.html
<html>
<head>
<meta http-equiv=refresh content="0
url=http://www.kgc.com/awstats/awstats.pl?config=www.kgc.com">
</head>
<body></body>
</html>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值