Apache配置!设置连接保持、访问控制及日志分割

Apache 连接保持

概述

HTTP 是属于应用层的面向对象协议,基于 TCP 协议之上的可靠传输。每次在进行 HTTP 连接之前,需要先进行 TCP 连接,在 HTTP 连接结束后要对 TCP 连接进行终止,每 个 TCP 连接都需要进行三次握手与四次断开。HTTP 协议不会对之前发生过的请求和响应 进行管理,所以频繁地建立与关闭连接对于 HTTP 而言会消耗更多的内存与 CPU 资源。能 不能允许通过同一个 TCP 连接发出多个请求,从而减少与多个连接相关的延迟,解决办法 就是连接保持

具体办法

Apache通过设置配置文件httpd-default.conf中相关的连接保持参数来开启与控制连接 保持功能。

  • KeepAlive:决定是否打开连接保持功能,后面接 OFF 表示关闭,接 ON 表示打开,可 以根据网站的并发请求量决定是否打开,即在高并发时打开连接保持功能,并发量不高 时关闭此功能。
  • KeepAliveTimeout:表示一次连接多次请求之间的最大间隔时间,即两次请求之间超 过该时间连接就会自动断开,从而避免客户端占用连接资源。
  • MaxKeepAliveRequests:用于设置在一次长连接中可以传输的最大请求数量,超过此 最大请求数量就会断开连接,最大值的设置决定于网站中网页的内容,一般设置数量会 多于网站中所有的元素。
[root@localhost html]# vi /usr/local/httpd/conf/httpd.conf
……省略部分
include conf/extra/httpd-default.conf  //去掉前面的注释,开启功能
……省略部分

###配置连接保持###

vi/usr/local/httpd/conf/extra/httpd-default.conf 
KeepAlive On     //保持连接开启(默认开启)
MaxKeepAliveRequests 200   //一次连接最多请求200个文件(默认100个)
KeepAliveTimeout 10  //无响应超时踢下线时间设置10秒(默认5秒)

Apache用户访问控制

1.客户机地址限制

1.1概述

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

1.2 具体配置

  • Require all granted:允许所有主机访问;
  • Require all denied:拒绝所有主机访问;
  • Require local:仅允许本地主机访问;
  • Require [not] host <主机名或域名列表>:允许或拒绝指定主机或域名访问;
  • Require [not] ip <IP 地址或网段列表>:允许或拒绝指定 IP 地址网络访问。
[root@localhost ~]# vi /usr/local/httpd/conf/httpd.conf 
<Directory "/usr/local/httpd/htdocs">
……省略部分
        Require ip 192.168.2.0/24   //默认为:Require all granted全部允许访问,将其修改,只允许192.168.2.0网段访问
</Directory>

当需要使用“仅拒绝”的限制策略时,灵活使用Require与 Require not配置语句设置拒绝访问策略,仅禁止一部分主机访问。在使用not禁止访问时要将其置于……容器中,并在容器中设置相应的限制策略。

[root@localhost ~]# vi /usr/local/httpd/conf/httpd.conf
<Directory "/usr/local/httpd/htdocs">
……省略部分
    <RequireAll>
	Require all granted 
	Require not ip 192.168.2.0/24 192.168.1.0/24
    </RequireAll>
 </Directory>

2.用户授权登录

2.1概述

httpd 服务器支持使用摘要认证(Digest)和基本认证(Basic)两种方式。使用摘要认 证需要在编译 httpd 之前添加“–enable-auth-digest”选项,但并不是所有的浏览器都支持摘要认证(Digest);而基本认证(Basic)是 httpd 服务的基本功能,不需要预先配置特别的选项。
httpd的基本认证通过校验用户名、密码组合来判断是否允许用户访问。授权访问的用户账号需要事先建立,并保存在固定的数据文件中。使用专门的htpasswd工具程序,可以创建授权用户数据文件,并维护其中的用户账号。

2.2具体操作

使用htpasswd工具时,必须指定用户数据文件的位置,添加“-c”选项表示新建立此文
件。例如,执行以下操作可以新建数据文件/usr/local/httpd/conf/.awspwd,其中包含一个名
为webadmin的用户信息

[root@localhost conf]# /usr/local/httpd/bin/htpasswd -c /usr/local/httpd/conf/.awspwd weixin
                    //-c创建文件,为Apache用户weixin设置登入验证密码
New password:  //在此输入密码
Re-type new password: 
Adding password for user weixin
[root@localhost conf]# /usr/local/httpd/bin/htpasswd /usr/local/httpd/conf/.awspwd weixin1
                   //上面已经创建了文件,所有这里不用-c了
New password:  //在此输入密码
Re-type new password: 
Adding password for user weixin1
[root@localhost conf]# cat /usr/local/httpd/conf/.awspwd   //查看用户数据文件
weixin:$apr1$f9ASKCFP$bR1a5zuq0DS0Z4dxQCrhq0
weixin1:$aadr1$f9DHCFP$bSHJGDuq0DS0Z4dxQCrh
[root@localhost opt]# vi /usr/local/httpd/conf/extra/httpd-vhosts.conf //配置访问验证(这里就用虚拟web主机做配置了)注意:要开启主配置文件中虚拟主机模块
<VirtualHost 20.0.0.11:80>
    DocumentRoot "/opt/www/html/51xit.top"
    ServerName www.51xit.top
    ErrorLog "logs/www.51xit.top.error_log"
    CustomLog "logs/www.51xit.top.access_log" common
    <Directory "/opt/www/html">
	####在访问控制模块配置以下内容
      AuthName "DocumentRoot"
      AuthType Basic
      AuthUserFile /usr/local/httpd/conf/.awspwd
      Require valid-user
   ###############################
    </Directory>
</VirtualHost>

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

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

访问测试
在这里插入图片描述

Apache日志分割

进行日志分割的原因

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

具体操作

1.使用Apache自有的日志分割工具

[root@localhost local]# vi /usr/local/httpd/conf/httpd.conf 
……省略部分
ErrorLog "|/usr/local/bin/rotatelogs -l /var/log/httpd/error-log_%Y%m%d.log 86400"
……省略部分
CustomLog "|/usr/local/httpd/bin/rotatelogs -l /var/log/httpd/access_%Y%m%d.log 86400" combined
//(注意:修改的是这一行以combined结尾的内容 #CustomLog "logs/access_log" combined,而不是CustomLog "logs/access_log" common,容易搞混淆)
……省略部分

2.使用第三方工具cronolog分割

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

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

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

[root@localhost~]# 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" combined
……省略部分
[root@localhost~]# systemctl restart httpd
[root@localhost ~]# cd /var/log/httpd
[root@localhost httpd]# ls  //日志文件产生了
access_20200901.log     www.51xit.top-access_20200901.log
error-log_20200901.log  www.51xit.top-error_20200901.log

Awstats分析系统

概述

在 httpd 服务器的访问日志文件 access_log 中,记录了大量的客户机访问信息,通过 分析这些信息,可以及时了解 Web 站点的访问情况,如每天或特定时间段的访问 IP 数量, 点击量最大的页面等。
AWStats是使用Perl语言开发的一款开源日志分析系统,它不仅可用来分析Apache 网 站服务器的访问日志,也可以用来分析 Samba、Vsftpd、IIS 等服务的日志信息。结合 crond 等计划任务服务,可以对不断增长的日志内容定期进行分析。

具体操作

1.安装 AWStats 软件包

[root@localhost opt]# tar zxf awstats-7.7.tar.gz //解压源码包
[root@localhost opt]# mv /opt/awstats-7.7 /usr/local/awstats //移动到/usr/local/awstats,方便管理

2.为要统计的站点建立配置文件

[root@localhost opt]# cd /usr/local/awstats
[root@localhost awstats]# ls
docs  README.md  tools  wwwroot
[root@localhost awstats]# cd /usr/local/awstats/tools/
[root@localhost tools]# ./awstats_configure.pl 

……省略部分
Config file path ('none' to skip web server setup):
> /usr/local/httpd/conf/httpd.conf
……省略部分
Do you want me to setup Apache to write 'combined' log files [y/N] ? y
……省略部分  
Do you want me to build a new AWStats config/profile
file (required if first install) [y/N] ? y
……省略部分 
Your web site, virtual server or profile name:
> www.51xit.top
……省略部分 
Default: /etc/awstats
Directory path to store config file(s) (Enter for default):
>   //默认回车即可
……省略部分 
/usr/local/awstats/tools/awstats_updateall.pl now
Press ENTER to continue...   //这里继续回车
……省略部分 
> perl awstats.pl -update -config=www.51xit.top   
You can also read your statistics for 'www.51xit.top' with URL:
> http://localhost/awstats/awstats.pl?config=www.51xit.top  //这个生成的用于登入Awstats日志分析系统的连接,将localhost改为自己的主机ip,复制下来后面测试用

Press ENTER to finish... //继续回车
[root@localhost tools]# vim /usr/local/httpd/conf/httpd.conf
……省略部分
<IfModule !mpm_prefork_module>
        LoadModule cgid_module modules/mod_cgid.so  //去掉前面的”#”号
</IfModule>
<IfModule mpm_prefork_module>
        LoadModule cgi_module modules/mod_cgi.so  //去掉前面的”#”号
……省略部分
<Directory "/usr/local/awstats/wwwroot">   //主配置文件中自动生成了awstats模块
    Options None
     AllowOverride None
#    Order allow,deny   //注释掉
#    Allow from all      //注释掉
     Require all granted   //新增这条,允许所有访问
</Directory>
[root@localhost tools]# systemctl restart httpd

3.修改站点统计配置文件

root@localhost tools]# vim /etc/awstats/awstats.www.51xit.top.conf //编辑awstats配置文件
……省略部分
LogFile="/usr/local/httpd/logs/access_log"   //指定访问日志文件路径
……省略部分
DirData="/var/lib/awstats"           //设置awstats数据文件目录,默认为/var/lib/awstats
[root@localhost tools]# mkdir /var/lib/awstats  //创建awstats分析系统的数据文件目录
[root@localhost tools]# chmod +x awstats_updateall.pl 
[root@localhost tools]# ./awstats_updateall.pl  //启动更新(这条有时不管用,用下面这条)
#[root@localhost tools]# /usr/local/awstats/wwwroot/cgi-bin/awstats.pl -update -config=www.51xit.top 
                          //后面的跟监听的域名   

4.访问测试

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/CN_LiTianpeng/article/details/108439527