文章目录
简介
- Apache HTTP Server 之所以受到众多企业的青睐,得益于其代码开源、跨平台、功能模拟化、可灵活定制等诸多优点,其不仅性能稳定,在安全性方面的表现也非常出色。这里主要涉及,Apache连接保持、Apache访问控制、Apache日志管理的方法介绍。
1.Apache连接保持
1.1 为什么要保持连接
- HTTP协议是基于TCP协议之上的,在进行HTTP连接之前,要先进行TCP连接,每个TCP连接都要进行三次握手与四次挥手。建立与关闭连接对于HTTP协议而言会消耗很多的内存与CPU资源。
- HTTP连接保持就能解决这个问题。尽量地保持客户端的连接,通过一个TCP连接传送多个HTTP请求响应,对于客户端可以提高50%以上的响应时间,对于服务器可以降低建立与关闭连接时的资源消耗。
1.2 Apache连接保持相关参数
- KeepAlive
是否打开连接保持,OFF关闭,ON打开 - KeepAliveTimeout
表示一次连接多次请求之间的最大间隔时间,两次请求超过该时间,连接就会自动断开 - MaxKeepAliveRequests
一次连接能够传输的最大请求数量,超过此最大请求数量就会断开连接
2.Apache访问控制
2.1 Apache访问控制概述
- 作用:控制对网站资源的访问、为特定的网站目录添加访问授权。
- 常用访问控制方式:客户机地址限制、用户授权限制。
注意:客户机地址限制、用户授权限制,这两种访问控制方式都应用于httpd.conf配置文件中的目录区域
<Directory 目录位置>······</Directory>范围内
2.2 客户端地址的访问控制
-
通过配置项 Order、Deny from、Allow from ,可以根据客户机的主机名或 IP地址来决定是否允许客户端访问。其中,使用Require配置项实现访问控制,按先后顺序限制 Order 配置用于设置限制顺序,Deny from 和 Allow from 用来设置限制内容。
-
使用Require配置项实现访问控制,按先后顺序限制,Require配置项的常见语法Require all granted
Require all granted //允许所有人访问
Require all denied //拒绝所有人访问
Require local //允许本地用户访问
Require [not] host <主机名或域名列表> //允许或者禁止某些主机或域名访问
Require [not] ip <IP地址或网段列表> //允许或者禁止某些IP地址或网段访问
//使用not禁止访问时要将其置于<RequireAll>······</RequireAll>容器中,并在容器中指定相对应的限制策略
- Require配置应用实例:
[root@localhost ~]# cd /etc/httpd/conf
[root@localhost conf]# ls
httpd.conf magic
[root@localhost conf]# mkdir abc
[root@localhost conf]# ls
abc httpd.conf magic
[root@localhost conf]# cd abc
[root@localhost abc]# vim vhost.conf
<VirtualHost *:80>
...省略内容
<Directory "/var/www/html">
Require not ip 192.168.140.15 //表示不允许ip地址192.168.140.15访问
Require all granted
</Directory>
</VirtualHost>
...省略内容
注意:
在apache主配置文件中,需要将Require配置项添加在 容器中;
同时需要配置在<Directory “/var/www/html”> 配置段中,对该目录下的网页的访问进行限制。
2.3 用户授权限制
1)创建用户认证数据库
- 命令基本格式如下:
-c:create,新建用户时使用
/etc/httpd/conf/user:新建保存用户信息的密码文件
示例:
//htpasswd命令是httpd自带的
[root@localhost ~]# htpasswd -c /etc/httpd/conf/abc webadm //为用户webadm创建密码文件
New password: //输入密码
Re-type new password: //重复输入密码
Adding password for user webadm
[root@localhost ~]# cat /etc/httpd/conf/abc //确认用户数据文件
webadm:webadm:$apr1$mQehosKB$UHVnvesYwpV/YCZNqqG7N. //加密密码
2)添加用户授权配置
- 配置基本格式
<Directory "/var/www/html">
AuthName "DocumentRoot" //指定受保护的领域名称,可以自己命名
AuthType Basic //指定认证类型
AuthUserFile /etc/httpd/conf/user //指定用户认证账号文件
Require valid-user //要求通过认证才能访问
</Directory>
3)vhost.conf主配置文件设置
[root@localhost abc]# vim vhost.conf
... //省略内容
<VirtualHost 192.168.140.14:80>
DocumentRoot "/var/www/html/aa"
ServerName www.aa.com
Errorlog "logs/www.aa.com.error_log"
Customlog "logs/www.aa.com.custom_log" common
<Directory "/var/www/html">
AuthName "DocumentRoot"
AuthType Basic
AuthUserFile /etc/httpd/conf/abc //指定abc数据文件中的某一用户访问系统
Require valid-user
</Directory>
</VirtualHost>
... //省略内容
3.Apache日志管理
3.1 日志分割
- 随着网站的访问量增大,默认情况下Apache的单个日志文件也会越来越大:日志文件占用磁盘空间很大,查看相关信息不方便;
- 对日志文件进行分割:Apache自带rotatelogs分割工具实现,第三方工具cronolog分割。
3.2 rotatelogs分割工具
- 配置网站的日志文件转交给rotatelogs分割处理,配置格式为
ErrorLog "| rotatelogs 命令的绝对路径 -l 日志文件路径/网站名-error_%Y%m%d.log 86400"
//which rotatelogs命令查看绝对路径,%Y%m%d表示年月日,86400表示一天的秒数
CustomLog "| rotatelogs 命令的绝对路径 -l 日志文件路径/网站名-access_%Y%m%d.log 86400" combined
示例:
[root@localhost logs]vim /etc/httpd/conf/httpd.conf //进入apache的主配置文件
... //省略内容
ErrorLog "| /usr/sbin/rotatelogs -l logs/error_%Y%m%d.log 86400"
CustomLog "| /usr/sbin/rotatelogs -l logs/access_%Y%m%d.log 86400" combined
- 日志文件的产生
服务安装后,不会生成日志文件不会产生
服务启动后,生成日志文件
访问服务后,日志文件会生成内容
3.3 第三方工具cronolog
-
源码编译安装cronolog工具
-
配置网站日志文件转交给cronolog分割处理,配置格式
ErrorLog "| cronolog命令的绝对路径 日志文件路径/网站名-error_%Y%m%d.log"
//管道符号
CustomLog "| cronolog命令的绝对路径 日志文件路径/网站名_%Y%m%d.log" combined
//-l 指定日志文件路径,这里不要用-l 用了会生成不了日志
示例:
[root@localhost ~]# vim /etc/httpd/conf/httpd.conf ##进入apache的主配置文件
...省略内容
ErrorLog "| /usr/sbin/cronolog logs/www.test.com.error_%Y%m%d.log"
CustomLog "| /usr/sbin/cronolog logs/www.test.com.access_%Y%m%d.log" combined
...省略内容
4.AWStats日志分析系统
AWStats概述:
- perl语言(骆驼语言)开发的一款开源日志分析系统;
- 可用来分析Apache,Samba,vsftpd,IIS 等服务器的访问日志;
- 信息结合crond等计划任务服务,可对日志内容定期进行分析。
部署AWStats环境准备
1)安装AWStats软件包
[root@localhost opt]# mkdir /usr/local/awstats
[root@localhost opt]# tar zxf awstats-7.6.tar.gz -C /usr/local/awstats
2)建立配置文件
[root@localhost ~]# cd /usr/local/awstats/awstats-7.6/tools/
[root@localhost tools]# ls
awstats_buildstaticpages.pl dolibarr maillogconvert.pl xslt
awstats_configure.pl geoip_generator.pl nginx
awstats_exportlib.pl httpd_conf urlaliasbuilder.pl
awstats_updateall.pl logresolvemerge.pl webmin
[root@localhost tools]# ./awstats_configure.pl ##软件包解压后的tools工具中自带配置脚本
...省略内容
Enter full config file path of your Web server.
Config file path ('none' to skip web server setup):
> /etc/httpd/conf/httpd.conf //输入Web服务器的主配置文件地址
What is the name of your web site or profile analysis ?
Your web site, virtual server or profile name:
> www.test.com //输入域名
...省略内容
-----> Create config file '/etc/awstats/awstats.www.test.com.conf' //为要统计的站点建立的配置文件
Config file /etc/awstats/awstats.www.test.com.conf created.
...省略内容
You can also read your statistics for 'www.test.com' with URL:
> http://localhost/awstats/awstats.pl?config=www.test.com //AWStats日志分析系统的登录地址
//其余操作按 "y 或者 回车" 即可
3)编辑要统计的站点主配置文件参数
[root@localhost tools]# vim /etc/httpd/conf/httpd.conf
...省略内容
<Directory "/usr/local/awstats/awstats-7.6/wwwroot"> ##搜索“awstats”可以快速定位
Options None
AllowOverride None
#Order allow,deny ##添加注释
#Allow from all ##添加注释
Require all granted ##允许所有人访问
</Directory>
...省略内容
4)修改刚才新建的站点统计配置文件
[root@localhost tools]# vim /etc/awstats/awstats.www.test.com.conf
...省略内容
LogFile="/var/log/httpd/access_log" ##修改访问日志文件位置
...省略内容
DirData="/var/lib/awstats" ##awstats文件默认不存在,需要创建
...省略内容
[root@localhost tools]# mkdir /var/lib/awstats
[root@localhost tools]# systemctl start httpd
5)重启apache服务后,登录AWStats日志分析系统的地址
[root@localhost named]# systemctl restart httpd
http://www.test.com/awstats/awstats.pl?config=www.test.com
6)使用awstats软件包tools目录下的更新脚本更新数据
[root@localhost named]# cd /usr/local/awstats/awstats-7.6/tools/
[root@localhost tools]# ls
awstats_buildstaticpages.pl dolibarr maillogconvert.pl xslt
awstats_configure.pl geoip_generator.pl nginx
awstats_exportlib.pl httpd_conf urlaliasbuilder.pl
awstats_updateall.pl logresolvemerge.pl webmin
[root@localhost tools]# ./awstats_updateall.pl now
注意:由于每次手动输入不现实,可结合crontab计划性任务更新数据
[root@localhost tools]# crontab -e
*/5 * * * * /usr/local/awstats/tools/awstats_updateall.pl now
7)优化awstats网页地址
[root@localhost tools]# cd /var/www/html/
[root@localhost html]# ls
[root@localhost html]# vim aws.html
<html>
<head>
<meta http-equiv=refresh content="0;
url=http://192.168.140.14/awstats/awstats.pl?config=www.test.com">
</head>
<body></body>
</html>
//这样就可以使用http://192.168.140.14/aws.html 来访问了