Apache功能配置:访问控制、日志分割; 部署AWStats日志分析工具

news2024/11/14 22:03:51

目录

保持连接

访问控制

只允许指定ip访问

拒绝指定主机其他正常访问

用户授权

日志格式

日志分割

操作步骤

使用第三方工具cronolog分割日志

AWStats日志分析

操作步骤

访问AwStats分析系统


保持连接

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

使用vim /usr/local/httpd/conf/extra/httpd-default.conf命令打开apache的默认配置文件

注意在httpd的主配置文件中将httpd-default.conf 的in         clude前的注释符去掉,让主配置文件包含该配置文件

参数

说明

KeepAlive

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

MaxKeepAliveRequests

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

KeepAliveTimeout

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

开启httpd服务后,在访问http服务时,在网页中按下F12,打开开发人员工具,在选中网络窗口,使用Ctrl + R刷新网页

选中主机ip,可以看到标头下的响应标头的信息,显示Keep-Alive已经开启,相关参数是timeout=5, max=97

现在来到默认配置文件(/usr/local/httpd/conf/extra/httpd-default.conf)中修改超时时间和最大连接数

保存并退出,使用systemctl restart httpd重启服务

此时来到浏览器刷新,可以看到最大连接数为90


访问控制

使用vim /usr/local/httpd/conf/httpd.conf命令进入httpd主配置文件

在末行模式下搜索Directory(:/Directory)可以找到单元,这个单元就规定了允许或拒绝用户访问哪些目录(访问权限)

<Directory "/usr/local/httpd/htdocs">
    # 省略注释
    Options Indexes FollowSymLinks
    AllowOverride None
    Require ip 192.168.10.102 # 修改为ip地址
#   Require ip 192.168.10.0/24 规定为网段也可以
</Directory>

图中的Require all denied规定了用户全都不能访问系统的根目录

往下翻一点,可以看到另一个Directory单元,这个单元中就规定了用户可以访问/usr/local/httpd/htdocs目录

只允许指定ip访问

<Directory "/usr/local/httpd/htdocs">
    # 省略注释
    Options Indexes FollowSymLinks
    AllowOverride None
    Require ip 192.168.10.102 # 修改为ip地址
#   Require ip 192.168.10.0/24 规定为网段也可以
</Directory>

修改后需要重启服务

然后打开一台带有图形化界面的虚拟机,比如win10或win11,或者使用第二台Linux主机,通过curl命令也可以

将其ip修改为192.168.10.102,访问Web服务器(192.168.10.101),可以看到访问是通过的

 

使用宿主机访问也不能正常访问了,403状态码

拒绝指定主机其他正常访问

<Directory "/usr/local/httpd/htdocs">
    # 省略注释
    Options Indexes FollowSymLinks
    AllowOverride None
    <RequireAll>
        Require all granted    # 允许所有主机访问
        Require not ip 192.168.10.102    # 拒绝192.168.10.102访问
    </RequireAll>
</Directory>

此时除了刚刚开启的102主机其他的都可以正常访问Web服务器

用户授权

验证授权的方式变成账号密码,需要用到Apache自带的htpasswd工具生成

使用htpasswd命令生成文件,第一次创建需要加-c选项,后续就不需要加-c了

通过cat命令可以查看到生存的用户和密钥

[root@localhost ~]# cat /usr/local/httpd/conf/.example 
tom:$apr1$9E2tS/4/$28pw.i5heCsVXYY9TA7Og/
jerry:$apr1$dQtbTAQw$w3QYXr8E62MzoYnNbUEiC1

再修改配置文件(/usr/local/httpd/conf/httpd.conf

<Directory "/usr/local/httpd/htdocs">
    # 省略注释
    Options Indexes FollowSymLinks
    AllowOverride None
    
    AuthName "abc" # 指定授权域的名称或描述
    AuthType Basic # 指定了认证的类型为 Basic,即基本认证方式。
    AuthUserFile /usr/local/httpd/conf/.example # 指定了存储用户账号和密码的文件的路径
    Require valid-user # 要求访问受保护资源的用户必须提供有效的用户名和密码。
</Directory>

Basic:指定了认证的类型为 Basic,即基本认证方式。Basic Authentication 是一种简单的认证方式,客户端(通常是浏览器)会将用户名和密码以明文形式通过 HTTP 的 Authorization 头部发送给服务器。

最后在访问Web服务器时,就会被要求输入账号和密码


日志格式

打开Apache的主配置文件(/usr/local/httpd/conf/httpd.conf),在末行模式下搜索Log(:/Log)

可以看到httpd提供的两种日志格式,第一种是combined(组合格式),第二种是common(通用格式)

在下方可以看到access_log(访问日志)用的是通用格式来生成日志的,这里我们改成组合格式

 

改为组合模式

保存并退出,重启httpd服务,再次访问Web服务器。然后cat查看/usr/local/httpd/logs/access_log文件

可以看到最后一行的组合日志格式生成的日志

192.168.10.1 - - [10/Jul/2024:10:19:23 +0800] "GET / HTTP/1.1" 200 154 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0.0.0 Safari/537.36 Edg/126.0.0.0"

参数

说明

&h

客户端的IP地址或主机名

%l

客户端的标识符,如果启用了标识符(如通过 IdentLookups 配置),否则为 -

%u

请求时客户端提供的用户名(如果是用户认证登录,就显示为用户),否则显示 -

%t

请求的时间戳

\"%r\"

客户端请求的第一行,包括 HTTP 方法、请求路径和协议

这里的 \ 是转义符

%>s

服务器返回给客户端的HTTP状态码

%b

传输给客户端的字节数,不包括HTTP头部的大小

\"%{Referer}i\"

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

i是首部的意思,即请求头

\"%{User-Agent}i\"

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

&I

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

%O

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


日志分割

日志分割需要使用Apache自带的日志分割工具rotatelogs

操作步骤

依旧打开httpd主配置文件

将刚才修改日志格式的行注释掉,使用CustomLog指定日志记录的方式

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

参数

说明

|

将生成的日志数据传递给一个外部程序进行处理或存储

/usr/local/bin/rotatelogs

指定日志分割工具的路径

-l /var/log/httpd/access_%Y%m%d.log

指定了日志文件的格式和存储位置

-l:用于指定日志文件的命名模式和路径

%Y%m%d

表示将日期格式化为年(四位数)、月、日,例如 access_20240710.log

86400

日志文件的滚动时间间隔,单位是秒。这里代表一天的秒数,即每隔一天就会生成一个新的日志文件。

保存并退出,重启服务。手动在指定的/var/log下创建httpd目录

再通过浏览器访问Web服务器,然后去/var/log/httpd/下查看access_20240710.log文件

[root@localhost httpd]# cat access_20240710.log 
192.168.10.1 - - [10/Jul/2024:10:40:07 +0800] "GET / HTTP/1.1" 304 - "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0.0.0 Safari/537.36 Edg/126.0.0.0"
192.168.10.1 - - [10/Jul/2024:10:40:07 +0800] "GET / HTTP/1.1" 304 - "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0.0.0 Safari/537.36 Edg/126.0.0.0"
192.168.10.1 - - [10/Jul/2024:10:40:08 +0800] "GET / HTTP/1.1" 304 - "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0.0.0 Safari/537.36 Edg/126.0.0.0"

使用第三方工具cronolog分割日志

将源代码软件包拖入XShell,使用tar zxvf命令解压,进入解压目录

使用 ./configuremake && make instll 安装

进入/usr/local/sbin/目录下可以看到自动将命令安装进sbin目录下了

[root@localhost cronolog-1.6.2]# cd /usr/local/sbin/
[root@localhost sbin]# ls
cronolog  cronosplit

进入httpd主配置文件,修改日志记录方式

#CustomLog "logs/access_log" combined
CustomLog "|/usr/local/sbin/cronolog /var/log/httpd/my_access_%Y%m%d.log" combined

保存并退出,重启服务。

再通过浏览器访问Web服务器,然后去/var/log/httpd/下查看my_access_20240710.log文件

[root@localhost httpd]# cat my_access_20240710.log 
192.168.10.1 - - [10/Jul/2024:10:48:30 +0800] "GET / HTTP/1.1" 304 - "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0.0.0 Safari/537.36 Edg/126.0.0.0"

实验完成后把日志记录方式改为原来的,用于下一步日志分析的实验

CustomLog "logs/access_log" combined
#CustomLog "|/usr/local/sbin/cronolog /var/log/httpd/my_access_%Y%m%d.log" combined

AWStats日志分析

Awstats是一个免费非常简洁而且强大有个性的网站日志分析工具。

操作步骤

将源代码软件包拖入XShell,使用tar zxvf命令解压,然后使用mv awstats-7.7 /usr/local/awstats命令将解压出的目录移动到/usr/local/下并将目录名重命名为awstats

cd到/usr/local/awstats目录下,再进入tools子目录,可以看到这里存放着工具集

[root@localhost ~]# cd /usr/local/awstats/
[root@localhost awstats]# ls
docs  README.md  tools  wwwroot
[root@localhost awstats]# cd 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

在该目录下使用awstats_configure.pl初始化

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

Enter full config file path of your Web server.
Example: /etc/httpd/httpd.conf    # 使用yum安装的位置
Example: /usr/local/apache2/conf/httpd.conf    # 使用源代码可能安装的位置
Example: c:\Program files\apache group\apache\conf\httpd.conf    # Windows系统下可能安装apache的安装路径
Config file path ('none' to skip web server setup):
> /usr/local/httpd/conf/httpd.conf    # 填入Apache的配置文件路径,回车

-----> Need to create a new config file ?    # 是否需要创建一个新的配置文件
Do you want me to build a new AWStats config/profile    # 是否希望它创建一个新的AWStats配置文件或配置文件模板
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.tom.com      # 输入想命名的AWStats配置文件的名称

-----> 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):
> 
    # 这里使用默认路径 所以直接回车

Press ENTER to continue...
# 回车,以继续
Press ENTER to finish...
# 回车,以结束

修改httpd配置文件,在命令模式下按下大写字母G,来到文件末尾,修改<Directory>标签为允许全部客户端访问该目录下的文件和脚本

[root@localhost ~]# vim /usr/local/httpd/conf/httpd.conf
<Directory "/usr/local/awstats/wwwroot">
    Options None
    AllowOverride None
    Require all granted
</Directory>

编辑awstats初始化后生成的配置文件,然后创建存储AWStats数据的目录

[root@localhost tools]# vim /etc/awstats/awstats.www.tom.com.conf
在第50行,改为httpd路径位置
Logile="/usr/local/httpd/logs/access_log"
在第220行,改为如下内容
DirData="/var/lib/awstats"    # 指定了AWStats存储数据文件的目录路径
[root@localhost awstats]# mkdir /var/lib/awstats

编辑当前用户的 cron 任务

[root@localhost tools]# crontab -e
*/2 * * * * /usr/local/awstats/tools/awstats_updateall.pl now

*/2:表示每隔2分钟执行一次后面的命令
*:通配符,表示所有可能的值
/usr/local/awstats/tools/awstats_updateall.pl now:是要执行的命令或者脚本

再修改httpd配置文件,在命令模式下按下大写G来到文件末尾,在文件末尾添加IfModule标签加载不同模块,最后重启服务

[root@localhost ~]# 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
</IfModule>

重启服务
[root@localhost tools]# systemctl restart httpd

访问AwStats分析系统

在浏览器访问站点:http://192.168.10.101/awstats/awstats.pl?config=www.tom.com

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1914963.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Docker安装HomeAssistant

检查Docker服务是否正常运行&#xff0c;确保Docker正常运行。 systemctl status docker#输出---------------------- docker.service - Docker Application Container EngineLoaded: loaded (/usr/lib/systemd/system/docker.service; enabled; vendor preset: disabled)Activ…

mount卡住(失败)解决方案

mount -a卡主 第一步确保两边都打开了NFS服务&#xff01;&#xff01;&#xff01;&#xff01; 客户端执行mount -av 查看信息是拒绝服务 查看服务端&#xff1a;showmount -e 192.168.25.168 看提示信息处理&#xff0c;关闭两端的防火钱 遇到这个错误就是服务端不让客户端…

【音频特征提取】傅里叶变换算法源码学习记录

目录 背景快速理解FFT&#xff08;快速傅里叶变换&#xff09;IFFT&#xff08;逆傅里叶变换&#xff09;STFT&#xff08;短时傅里叶变换&#xff09; 代码实现FFT源代码IFFT源代码FFT、IFFT自己实验STFT源代码STFT自己实验 总结 背景 最近用到了相关操作提取音频信号特征&am…

stm32单片机的分类与命名

一、Stm32单片机的分类 二、Stm32单片机的命名 例如&#xff1a;STM32F103C8T6

android13 设置左右分屏修改为单屏幕,应用分屏改为单屏

1.前言 android13中,系统设置变成,左边是一级菜单,右侧是二级菜单, 这样跟我们以前android7/8/9的布局是不一样的,我们需要将它修改为一级菜单,点进去才是二级菜单这种。 效果如下 2.系统设置实现分析 它这里使用的是google新出的embedding activity, 相关的知识这里…

LLM应用:行业大模型

大语言模型正在朝着两个方向发展&#xff0c;一个是以ChatGPT为代表的通用大模型&#xff0c;另一个则是行业大模型&#xff08;或称为“专业大模型”&#xff09;。如果大模型的演化分为阴阳两面&#xff0c;通用大模型更像是阳面&#xff0c;受众更广、更to C端&#xff0c;以…

【库架一体立体库】与【传统立体库】对比

导语 大家好&#xff0c;我是社长&#xff0c;老K。专注分享智能制造和智能仓储物流等内容。 随着冷链物流行业的快速发展&#xff0c;对于冷藏设施的要求也在不断提高。库架一体式智能立体冷藏库以其高效、节能、智能化的特点&#xff0c;正逐渐成为行业发展的新趋势。 分享一…

前端JS特效第28集:JQuery电影选座插件

JQuery电影选座插件&#xff0c;先来看看效果&#xff1a; 部分核心的代码如下(全部代码在文章末尾)&#xff1a; <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">&l…

有没有文字转语音的软件?轻松搞定文字转语音的工具

当文字跃然纸上&#xff0c;它们是静止的&#xff0c;沉默的。 但想象一下&#xff0c;如果这些文字能够被赋予声音&#xff0c;它们将如何生动地跳跃在我们的耳边&#xff1f;在这个充满无限可能的时代&#xff0c;文字转语音技术正将这种想象变为现实。它不仅让我们的阅读体…

外贸展示型网站设计

清洁能源风能设备wordpress外贸公司模板 风能设备wordpress外贸公司模板&#xff0c;做新能源网通设备的公司网站模板。 https://www.jianzhanpress.com/?p3606 钢材wordpress外贸公司模板 金属钢材wordpress外贸公司模板&#xff0c;做金属成品贸易公司的企业网站模板。 …

秒懂设计模式--学习笔记(9)【结构型-装饰器模式】

目录 8、装饰器模式8.1 装饰器模式&#xff08;Decorator&#xff09;8.2 装修&#xff08;举例&#xff09;8.3 化妆&#xff08;示例&#xff09;8.4 化妆品的多样化8.5 装饰器8.6 自由嵌套8.7 装饰器模式的各角色定义8.8 装饰器模式 8、装饰器模式 8.1 装饰器模式&#xff…

VBA即用型代码手册:根据预定义的文本条件删除行

我给VBA下的定义&#xff1a;VBA是个人小型自动化处理的有效工具。可以大大提高自己的劳动效率&#xff0c;而且可以提高数据的准确性。我这里专注VBA,将我多年的经验汇集在VBA系列九套教程中。 作为我的学员要利用我的积木编程思想&#xff0c;积木编程最重要的是积木如何搭建…

Everything搜索无法搜索到桌面的文件(无法检索C盘 或 特定路径的文件)

现象描述 在Everything搜索框中输入桌面已存在的文件或随便已知位置的文件&#xff0c;无法找到。 搜索时检索结果中明显缺少部分磁盘位置的&#xff0c;例如无法检索C盘&#xff0c;任意关键字搜索时结果中没有位于C盘的&#xff0c;无论怎样都搜不到C盘文件。 解决方法 在…

私活必备框架!终于找到一个前后端都有的后台管理系统了~

大家好&#xff0c;我是「程序视点」爱分享的小二哥~ 今天介绍一个新的Vue后台管理框架&#xff0c;相比其他后台功能丰富管理系统&#xff0c;这个后台管理系统可以用干净简洁来形容——Nova-admin Nova-admin Nova-admin 是一个基于Vue3、Vite5等最新技术的后台管理平台。用…

【实战场景】@Transactional中使用for update的注意点

【实战场景】Transactional中使用for update的注意点 开篇词&#xff1a;干货篇&#xff1a;知识回顾注意点1.锁的范围和粒度&#xff1a;2.事务的隔离级别&#xff1a;3.死锁&#xff1a;4.性能影响&#xff1a;5.事务的边界&#xff1a;6.异常处理&#xff1a;7. 数据库和存储…

Xinstall揭秘:APP推广数据背后的真相,让你的营销更精准!

在这个移动互联网时代&#xff0c;APP如同雨后春笋般涌现&#xff0c;但如何在这片红海中脱颖而出&#xff0c;成为每一个开发者与运营者面临的共同难题。其中&#xff0c;APP推广统计作为衡量营销效果、优化推广策略的关键环节&#xff0c;更是不可忽视的一环。今天&#xff0…

【java计算机毕设】学生项目竞赛管理系统 MySQL ssm JSP maven小组项目设计代码源码+万字文档

目录 1项目功能 2项目介绍 3项目地址 1项目功能 【java计算机毕设】学生项目竞赛管理系统 MySQL ssm JSP maven小组项目设计代码源码万字文档 2项目介绍 系统功能&#xff1a; 学生项目竞赛管理系统包括管理员、用户、教师三种角色。 管理员功能包括个人中心模块用于修改个…

JS进阶-构造函数

学习目标&#xff1a; 掌握构造函数 学习内容&#xff1a; 构造函数 构造函数&#xff1a; 封装是面向对象思想中比较重要的一部分&#xff0c;js面向对象可以通过构造函数实现的封装。 同样的将变量和函数组合到了一起并能通过this实现数据的共享&#xff0c;所不同的是借助…

SA8317E单通道 2.7-15.0V 持续电流 2.5A H 桥驱动芯片

描述 SA8317E 是为消费类产品&#xff0c;小家电和其他 低压或者电池供电的运动控制类应用提供 了一个集成的电机驱动器解决方案。此器 件能够驱动一个直流电机&#xff0c;由一个内部电 荷泵生成所需的栅极驱动电压电路和 4 个 功率 NMOS 组成 H 桥驱动&#xff0c;集成了电…

机器学习和AI智能写作对未来文案编辑的影响

欢迎关注小知&#xff1a;知孤云出岫 目录 机器学习和AI智能写作对未来文案编辑的影响1. 简介2. AI智能写作工具的现状3. AI智能写作的优势3.1 提高效率3.2 降低成本3.3 数据驱动的个性化 4. AI智能写作的挑战4.1 创造力和独创性4.2 道德和伦理问题4.3 技术限制 5. 行业变化5.…