APACHE

一:Apache 连接保持

[root@www ~]# vim /usr/local/httpd/conf/extra/httpd-default.conf

注意在httpd的主配置文件中将httpd-default.conf 的include前的注释符去掉

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

Ø KeepAlive:决定是否打开连接保持功能,后面接 OFF 表示关闭,接 ON 表示打开,可以根据网站的并发请求量决定是否打开,即在高并发时打开连接保持功能,并发量不高时关闭此功能。

Ø MaxKeepAliveRequests:用于设置在一次长连接中可以传输的最大请求数量,超过此最大请求数量就会断开连接,最大值的设置决定于网站中网页的内容,一般设置数量会多于网站中所有的元素。

Ø KeepAliveTimeout:表示一次连接多次请求之间的最大间隔时间,即两次请求之间超过该时间连接就会自动断开,从而避免客户端占用连接资源。

修改KeepAliveTimeout的值,默认为5,可以修改为其他值,重启httpd后再客户端浏览器中查看开发者工具中的结果

二:Apache 的访问控制

2.1:客户机地址限制

限制策略的格式如下所示。

Ø Require all granted:允许所有主机访问;

Ø Require all denied:拒绝所有主机访问;

Ø Require local:仅允许本地主机访问;

Ø Require [not] host <主机名或域名列表>:允许或拒绝指定主机或域名访问;

Ø Require [not] ip <IP 地址或网段列表>:允许或拒绝指定 IP 地址网络访问。

1:允许从任何客户机访问

<Directory "/usr/local/httpd/htdocs">

Require all granted

</Directory>

2:若只希望 IP 地址为 173.17.17.2 的主机能够访问

<Directory "/usr/local/httpd/htdocs/wwwtest">

Require ip 173.17.17.2

</Directory>

3:只希望禁止

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

<Directory "/usr/local/httpd/htdocs/wwwroot">

<RequireAll>

Require all granted

Require not ip 192.168.0.0/24 192.168.1.0/24

</RequireAll>

</Directory>

2.2:用户授权限制

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

[root@www ~]# cd /usr/local/httpd/

[root@www httpd]# bin/htpasswd -c /usr/local/httpd/conf/.awspwd webadmin

[root@www httpd]# cat /usr/local/httpd/conf/.awspwd

注意:

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

2:添加用户授权配置

[root@www ~]# vim /usr/local/httpd/conf/httpd.conf

<Directory "/usr/local/httpd/htdocs">

#Require all granted

AuthName "DocumentRoot"

AuthType Basic

AuthUserFile /usr/local/httpd/conf/.awspwd

Require valid-user

</Directory>

备注:

Ø AuthName:定义受保护的领域名称,该内容将在浏览器弹出的认证对话框中显示。

ØAuthType:设置认证的类型,Basic 表示基本认证。

Ø AuthUserFile:设置用于保存用户账号、密码的认证文件路径。

Ø require valid-user:要求只有认证文件中的合法用户才能访问。

[root@www ~]# systemctl restart httpd

3:验证用户访问授权

访问网站时,会提示输入账号和密码:

三:Apache 日志分割

1:Apache 自带 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/error_%Y%m%d.log 86400"

CustomLog "|/usr/local/bin/rotatelogs -l /var/log/httpd/access_%Y%m%d.log 86400" combined

[root@www ~]# systemctl restart httpd

备注:

其中 ErrorLog 行是错误日志,

-l 表示使用本地时间代替 GMT (格林尼治时间)时间作为时间基准

CustomLog 行是定义访问日志格式,

86400 表示一天,即每天生成一个新的日志文件

combined:日志格式,组合日志格式

common:日志格式,通用日志格式

常见格式串:

%h是远程主机   192.168.10.3

%l是由identd确定的用户的身份   -

%u是HTTP身份验证确定的用户名    -

%t是服务器处理完请求的时间。   [19/Jul/2022:21:18:50 +0800]

%r是来自客户端的请求行(“GET/HTTP/1.0”)。    "GET / HTTP/1.1"

%> s是从服务器发送到客户端的状态代码(500,404等)   304 

%b是客户端响应的大小(以字节为单位)     -

%{Referer}i:请求报文中首部"referer" 的值;即从哪个页面中的超链接跳转至当前页面的,防止盗链,i就是首部的意思,Referer是链接到此URL的页面。

%{User-Agent}i此项是客户端提供的浏览器识别信息i是首部的意思,即请求头

%I:服务器接收得字节数,需要启用mod_logio模块。

%O:服务器发送得字节数,需要启用mod_logio模块。

备注:

  • identd身份认证:identd 是一个服务器,它按照 RFC 1413 文档中指定的方式实现 TCP/IP 提议的标准 IDENT 用户身份识别协议
  • HTTP身份验证:htpasswd生成账号密码后,使用的Basic类型的身份认证

combined格式示例

192.168.10.3 - - [19/Jul/2022:21:18:50 +0800] "GET / HTTP/1.1" 304 - "http://192.168.10.101/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/103.0.0.0 Safari/537.36"

common格式示例

192.168.10.3 - - [19/Jul/2022:21:19:45 +0800] "GET / HTTP/1.1" 304 -

通用格式和组合格式内容类似,组合格式多了两个请求头信息

第一个请求头示例:"http://www.baicai.link/" (\"%{Referer}i\") ##黄色部分,有时会显示一个横杠 "-"

"Referer"请求头。此项指明了该请求是被从哪个网页提交过来的,这个网页应该包含有/apache_pb.gif或者其连接。

第二个请求头示例:"Mozilla/4.08 [en] (Win98; I ;Nav)" (\"%{User-agent}i\") ##绿色部分

"User-Agent"请求头。此项是客户端提供的浏览器识别信息。

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

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]# ./configure

[root@www cronolog-1.6.2]# make && make install

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

[root@www ~]# vim /usr/local/httpd/conf/httpd.conf

将之前的ErrorLog和CustomLog注释掉,添加新的日志分割参数:

ErrorLog "|/usr/local/sbin/cronolog /var/log/httpd/www.benet.com-error_%Y%m%d.log"

CustomLog "|/usr/local/sbin/cronolog /var/log/httpd/www.benet.com-access_%Y%m%d.log" combined

[root@www ~]# apachectl -t

[root@www ~]# apachectl restart

(2)访问网站并查看生成的日志文件

四:AWStats 日志分析

4.1:部署 AWStats 分析系统

1:安装 AWStats 软件包

[root@www ~]# tar zxf awstats-7.7.tar.gz

[root@www ~]# mv awstats-7.7 /usr/local/awstats

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

[root@www ~]# cd /usr/local/awstats/tools/

[root@www tools]# chmod +x awstats_configure.pl

[root@www tools]# ./awstats_configure.pl

1)指定 httpd 主配置文件的路径

>/usr/local/httpd/conf/httpd.conf

2)为指定 Web 站点创建配置文件

>www.benet.com

(3)日志文件存储路径

默认位置即可,直接回车

(4)后续配置工作

[root@www ~]# vim /usr/local/httpd/conf/httpd.conf

在文件末尾,会发现多了<Directory "/usr/local/awstats/wwwroot">模块,修改里面的内容,并在模块前面添加如下内容:

ErrorLog "logs/error_log"

CustomLog "logs/access_log" combined

<IfModule !mpm_prefork_module>

LoadModule cgid_module modules/mod_cgid.so

</IfModule>

<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

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

[root@www ~]#vim /etc/awstats/awstats.www.benet.com.conf

LogFile="/usr/local/httpd/logs/access_log"

DirData="/var/lib/awstats"

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

4:执行日志分析,并设置 cron 计划任务

[root@www ~]# cd /usr/local/awstats/tools/

[root@www tools]# chmod +x awstats_updateall.pl

[root@www tools]#./awstats_updateall.pl now

[root@www ~]# crontab -e

*/5 * * * * /usr/local/awstats/tools/awstats_updateall.pl now

4.2:访问 AWStats 分析系统

1:访问站点 http://192.168.10.101/awstats/awstats.pl?config=www.benet.com

2:简化登录语句

[root@www ~]# vim /usr/local/httpd/htdocs/awb.html

<html>

<head>

<meta http-equiv=refresh content="0;

url=http://www.benet.com/awstats/awstats.pl?config=www.benet.com">

</head>

<body></body>

</html>

访问awstat时输入链接http://www.benet.com/awb.html

备注:

如果客户端不能解析benet.com的域名,就将上面红色部分的域名直接改为IP地址,访问时的网址就变成了:http://192.168.10.101/awb.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值