Apacha的配置与应用

Apache(应用层)连接保持

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

KeepAlive
是否打开连接保持,OFF关闭,ON打开

KeepAlive Timeout
一次连接多次请求之间的最大间隔,两次请求超过改时间连接断开
MaxkeepAliveRequests

一次长连接能够传输的最大请求数量

验证连接保持

环境:还原到安装Apache环境

查看网页内容

[root@serverl ~]# cd /usr/local/httpd/htdocs/
[root@serverl htdocs]# ll
-rw-r--r--. 1 root root 45 6月  12 2007 index.html
[root@serverl htdocs]# cat index.html 

更换网卡、IP地址(网卡设置为仅主机模式)

[root@serverl htdocs]# vi /etc/sysconfig/network-scripts/ifcfg-ens33 
IPADDR=192.168.100.21   #修改后
GATEWAY=192.168.100.1   #修改后
[root@serverl htdocs]# systemctl restart network
[root@serverl ~]# ifconfig
查看ip是否改为192.168.100.21

进行抓包测试(效果图如下)此时查看到的信息为:默认keepalive是开启的,timeout是5s,max是100
在这里插入图片描述
修改主配置文件及连接保持(优化)

[root@server1 ~]# vi /usr/local/httpd/conf/httpd.conf 
#Include conf/extra/httpd-default.conf ##去掉前面注释
[root@serverl ~]# vi /usr/local/httpd/conf/extra/httpd-default.conf 
KeepAlive On     ##保持连接开启,默认是开启的
MaxKeepAliveRequests 100→MaxKeepAliveRequests 200  ##一次请求最多修改为200
KeepAliveTimeout 5→KeepAliveTimeout 10  ##无响应强制下线时间修改为10s
[root@serverl ~]# systemctl restart httpd  //重启服务

抓包测试(与默认对比,查看优化后效果)(发现最大连接数与强制下线时间都相应发生变化)
在这里插入图片描述

Apache的访问控制

通过 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”的策略,表示允许从任何客户机访问

验证访问控制

进入配置文件

[root@serverl ~]# vi /etc/httpd.conf

默认目录允许所有

<Directory "/usr/local/httpd/htdocs"> //目录下
...
Require all granted  //允许所有

允许192.168.100.1用户访问,由于此时网关为192.168.100.2,若设置为该ip时,用户都能访问

<Directory "/usr/local/httpd/htdocs"> //目录下
...
Require ip 192.168.100.1 

禁止来自两个内网网段 192.168.1.0/24 和 192.168.2.0/24 的主机访问,但允许其他任何主机访问

 <Directory "/usr/local/httpd/htdocs/bbs">  //目录下
 ...
 <RequireAll>
 Require all granted
 Require not ip 192.168.1.0/24 192.168.2.0/24
 </RequireAll>

注意:每修改一次,验证时都需要重新开启服务

[root@serverl ~]# systemctl restart httpd 

用户授权限制

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

验证用户授权限制

设置基本认证的用户名和密码,新建需要加-c,后续添加不用加-c

[root@server1 ~]# cd /usr/local/httpd/
[root@server1 httpd]# ll
drwxr-xr-x.  2 root root 4096 10月 31 12:12 bin
[root@server1 httpd]# cd bin/
-rwxr-xr-x. 1 root root   49200 10月 31 12:12 htpasswd  //创建账户日志信息
[root@server1 bin]# htpasswd -c /usr/local/httpd/conf/.awspwd wangtong  //创建用户wangtong
New password:         //自定义密码
Re-type new password:    //确认密码
Adding password for user wangtong   

[root@server1 bin]# cd ..
[root@server1 httpd]# ll
drwxr-xr-x.  4 root root   99 11月 11 19:25 conf
[root@server1 httpd]# cd conf/
[root@server1 conf]# ls -a 是否生成该文件
 .awspwd
[root@server1 conf]# cat .awspwd   //确认用户数据文件
wangtong:$apr1$6eX69N1C$GbYiHyS36H5b3euR8LKCc1

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

添加用户授权配置并重启服务

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

附加:
在上述配置内容中,相关配置项的含义如下。
1、AuthName:定义受保护的领域名称,该内容将在浏览器弹出的认证对话框中显示。
2、AuthType:设置认证的类型,Basic 表示基本认证。
3、AuthUserFile:设置用于保存用户账号、密码的认证文件路径。
4、require valid-user:要求只有认证文件中的合法用户才能访问。其中,valid-user
表示所有合法用户,若只授权给单个用户,可改为指定的用户名(如 webadmin)
注:要把原来允许所有注释掉#Require all granted

测试效果图如下:
在这里插入图片描述

日志分割

随着网站的访问量越来越大,默认情况下 Apache 服务器产生的单个日志文件也会越来越大,如果不对日志进行分割,那么如果日志文件占用磁盘空间很大的话势必会将整个日志文件删除,这样也丢失了很多对网站比较宝贵的信息,而这些日志可以用来进行访问分析、网络安全监察、网络运行状况监控等。另外,如果服务器遇到故障时,运维人员要打开日志文件进行分析,打开的过程会消耗很长时间,也势必会增加处理故障的时间。因此管理好这些海量的日志对网站的意义很大,我们会将 Apache 的日志进行按每天的日期自动分割。下面介绍两种方法均可实现。

Apache 自带 rotatelogs 分割工具

首先我们将 Apache 主配置文件 httpd.conf 打开,配置网站的日志文件转交给 rotatelogs分割处理

新建日志存储目录

[root@www ~]# mkdir /var/log/httpd/

编辑配置文件

[root@www ~]# vim /usr/local/httpd/conf/httpd.conf
####省略部分内容
ErrorLog "|/usr/local/bin/rotatelogs -l /var/log/httpd/51xit-error_%Y%m%d.log 86400"
CustomLog "|/usr/local/bin/rotatelogs -l /var/log/httpd/access_%Y%m%d.log 86400" common

重启服务

[root@bin~]# systemctl restart httpd

查看网页验证
在这里插入图片描述
查看日志

[root@bin~]#cd /var/log/httpd/
ll
总用量8
-rw-r--r--. 1 root root   56 11月 11 22:48 51xit-access_20201111.log  //默认自带
-rw-r--r--. 1 root root 1377 11月 11 22:48 51xit-error_20201111.log  //查看网页后显示

附加:

其中ErrorLog行是错误日志,不用太多关注,一般不会记录错误的访问,-l表示使用
本地时间代替GMT时间作为时间基准。注意:在一个改变GMT偏移量(比如夏令时)的环
境中使用-Ⅰ会导致不可预料的结果。
CustomLog行是定义访问日志格式,86400表示一天,即每天生成一个新的日志文件。
重启Apache服务,查看日志文件是否已经按日期分割

使用第三方工具cronolog分割

除了Apache自带rotatelogs分割工具,也可使用第三方工具cronolog对Apache日志
进行分割,具体操作如下所示

环境:将cronolog软件上传到root目录下
编译安装cronolog工具

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

设置cronolog工具工具分割apache日志

[root@www ~]# vim /usr/local/httpd/conf/httpd.conf
ErrorLog "/usr/local/sbin/cronolog /var/log/httpd/www.51xit.top-error_%Y%m%d.log"
CustomLog "/usr/local/sbin/cronolog /var/log/httpd/www.51xit.top-access_%Y%m%d.log" common

重启服务并查看

[root@www~]# systemctl restart httpd
[root@www~]# ll /var/log/httpd/ |grep "www.51xit.top"
-rW-r-r- 1 root root 6037月718:15 www.51xit.com-access_20180707.log
-rw-r-r- 1 root root 5847月718:14 www.51xit.com-error_20180707.log

注意:存储日志文件的目录不要忘记创建
查看文件需要进入:[root@server1 ~]# cd /var/log/httpd/目录下

部署 AWStats 分析系统

AWStats是使用Perl语言开发的一款开源日志分析系统,它不仅可用来分析Apache 网
站服务器的访问日志,也可以用来分析Samba、Vsftpd、IlS等服务的日志信息。结合crond
等计划任务服务,可以对不断增长的日志内容定期进行分析。
AWStats的软件包可以从官方网站下载。下面以awstats-7.7.tar.gz软件包为例,介绍
为Web站点www.kcce.com添加AWStats日志分析系统的过程。

1.安装AWStats软件包
awstats 软件包的安装非常简单,只需将软件包解压到httpd服务器中的/usr/local/目录下即可

[root@localhost httpd]# cd /opt
[root@www~]# wget http://awstats.org/files/awstats-7.6.tar.gz
[root@localhost opt]# tar zxf awstats-7.7.tar.gz
[root@localhost opt]# mv awstats-7.7 /usr/local/awstats

为要统计的站点建立配置文件
首先切换到awstats/tools目录下,并执行其中的awstats_configure.pl脚本。

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

后将会进入一个交互式的配置过程,将会检查awstats 的安装目录、httpd服务的配
置文件路径、日志记录格式等系统环境,并提示用户指定站点名称、设置配置文件路径

-----AWStats awstats_configure 1.0(build 20140126)(C)Laurent Destailleur -----

----->Running oS detected: Linux,BSD or Unix
----->Check for web server install
Enter full config file path of your Web server. Example:/etc/httpd/httpd.conf
Example:/usr/local/apache2/conf/httpd.conf
Example: c:\Program fileslapache grouplapache\conf\httpd.conf
Config file path ('none' to skip web server setup):
>/usr/local/httpd/conf/httpd.conf
####输入httpd.conf 配置文件的路径,输入错误按Ctrl + backspace

设置日志类型
将httpd服务器的日志记录格式改为“combined”,服务器可以在日志文件中记录更加详
细的 Web访问信息。因此,当提示是否修改日志类型时,建议选择“y”。然后配置脚本,将会自动修改httpd.conf 配置文件,以添加访问AWStats 系统的相关配置内容

----->Check and complete web server config file '/usr/local/httpd/conf/httpd.conf Warning: You Apache config file contains
directives to write 'common' log files
This means that some features can't work(os, browsers and keywords
detection). Do you want me to setup Apache to write 'combined' log files [y/N]? ####输入y
Add 'Alias /awstatsclasses"/usr/local/awstats/wwwroot/classes/"
Add 'Alias /awstatscss"/usr/local/awstats/wwwroot/css/"'l
Add 'Alias/awstatsicons "/usr/local/awstats/wwwroot/icon/
Add 'ScriptAlias /awstats/"/usr/local/awstats/wwwroot/cgi-bin/"
Add '<Directory>' directive
AWStats directives added to Apache config file.
----->Update model config file
'/usr/local/awstats/wwwroot/cgi-bin/awstats.model.conf' File awstats.model.conf

为指定 Web站点创建配置文件
根据提示继续选择“y”以创建站点配置文件,并指定要统计的目标网站名称、站点配置
文件的存放位置(默认为/etc/awstats)。

----- > Need to create a new config file ?
Do you want me to build a new AWStats config/profile
file (required if first install) [y/N]?y      ###确认创建新的站点配置文件
------> Define config file name to create
What is the name of your web site or profile analysis ?
Example: www.mysite.com
Example: demo
Your web site,virtual server or profile name:
>www.51xit.top    ####指定要统计的目标网站名称
------->Define config file path
In which directory do you plan to store your config file(s)?
Default:/etc/awstats
Directory path to store config file(s)(Enter for default):     ####直接按Enter 键接受默认设置
----->Create config file 'Vetc/awstats/awstats.www.51xit.top.conf’
Config file /etc/awstats/awstats.www.kgc.com.conf created.

后续配置工作
后续配置工作接下来将会尝试重启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 /usr/local/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>
<IfModule mpm_prefork_module>
LoadModule cgi_module modules/mod_cgi.so    ###这边修改下
</IfModule>
<Directory "/usr/local/awstats/wwwroot">
Options None
AllowOverride None 
#Order allow,deny    ####注释掉
#Allow from all    ####注释掉
Require all granted   ####添加
</Directory>

重启服务

[root@www~]# systemctl restart httpd

修改站点统计配置文件
为站点 www.51xit.top建立好配置文件以后,还需要对其做进一步的修改。修改的内容
主要包括指定要分析的 Web日志文件和指定用来存放统计数据的目录

[root@www~]# vim /etc/awstats/awstats.www.51xit.top.conf
LogFile= "/usr/local/httpd/logs/access_log"    ##必须要和http指定日志文件存放的路径一致
DirData= "/var/lib/awstats"

......//省略部分内容

创建指定路径

[root@www ~]#mkdir/var/lib/awstats

使用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      ###执行命令不要忘了加now
Running '"/usr/local/awstats/wwwroot/cgi-bin/awstats.pl" -update
-config=www.kgc.com -configdir= "/etc/awstats" to update config www.51xit.top
Create/Update database for config " /etc/awstats/awstats.www.51xit.top.conf" by
AWStats version 7.7 (build 20180105)
From data in log file "/usr/local/httpd/logs/access_log ...Phase 1:First bypass old records,searching new record... Searching
new records from beginning of log fil....Jumped lines in file: O
Parsed lines in file: 0
Found 0 dropped records, Found 0 comments, Found 0 blank records, Found 0 corrupted records,Found 0 old records,Found 0 new qualified records.

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

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

访问AWStats分析系统

访问站点http://192.168.100.21/awstats/awstats.pl?config=www.51xit.top后,即可看到
AWStats日志分析系统的统计页面,该页面分别按访问时间、用户来源、所用浏览器等类
别列出各种详细的网站访问情况,如图所示。若此处访问出现403 Forbidden错误,关
闭selinux即可正常访问。

在这里插入图片描述
在该页面中,拖动窗口右侧的滚动条即可查看整个分析报告内容;或者单击左侧导航栏
中的链接,可以选择查看其中的部分内容。
在“浏览器统计”类别下,可以查看用户的参观时间、所用的操作系统、浏览器版本、搜
索本网站的关键词等相关信息。

在访问AWStats 系统时,需要指定awstats目录、脚本位置、统计目标等信息,这样
既不便于记忆,输入时也比较麻烦。为了简化操作,可以在Web根目录下建立一个自动跳
转的HTML 网页。例如,执行以下操作后,用户只要访问http://www.51xit.top/awb.html,
即可自动跳转到www.51xit.top站点的 AWStats日志分析页面。

[root@www ~]# vim /usr/local/httpd/htdocs/awb.html   ###这个采集数据的页面放在站点目录中
<html>
<head>
<meta http-equiv=refresh content="0;
url=http://192.168.100.41/awstats/awstats.pl?config=www.51xit.top">
</head>
<body></body>
</html>

访问网站,效果图如下

192.168.100.21/awb.html

在这里插入图片描述

  • 6
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值