[LAMP]Apache访问日志

简介:

    访问日志,记录了网站访问者的信息。在一些特殊情况,我们可以通过访问日志提取出我们需要的信息。如:网站受攻击时发起源、统计访问用户大数据分布等。


一、网站访问日志

1、访问日志配置

1
2
3
4
5
6
7
8
9
10
11
12
13
[root@juispan ~] # vi /usr/local/apache2.4/conf/extra/httpd-vhosts.conf
<VirtualHost *:80>
     DocumentRoot  "/data/www/abc.com"
     ServerName abc.com
     ServerAlias www.abc.com
     <IfModule mod_rewrite.c>
         RewriteEngine on
         RewriteCond %{HTTP_HOST} !^abc.com$
         RewriteRule ^/(.*)$ http: //abc .com/$1 [R=301,L]
     < /IfModule >
     ErrorLog  "logs/abc.com-error_log"                 ##错误日志
     CustomLog  "logs/abc.com-access_log"  common        ##请求日志
< /VirtualHost >

2、查看访问日志

1
2
3
4
5
6
7
8
[root@juispan ~] # ls /usr/local/apache2.4/logs/
123.com-access_log  abc.com-access_log  access_log  httpd.pid
123.com-error_log   abc.com-error_log   error_log
[root@juispan ~] # tail /usr/local/apache2.4/logs/abc.com-access_log 
192.168.137.100 - - [21 /Jul/2017 :11:38:13 +0800]  "GET HTTP://abc.com/ HTTP/1.1"  403 209
192.168.137.100 - - [21 /Jul/2017 :12:00:52 +0800]  "GET HTTP://abc.com/ HTTP/1.1"  200 7
192.168.137.100 - - [21 /Jul/2017 :12:00:57 +0800]  "GET HTTP://www.abc.com/ HTTP/1.1"  200 7
192.168.137.100 - - [21 /Jul/2017 :12:01:06 +0800]  "GET HTTP://abcd.com/ HTTP/1.1"  200 7

▏日志格式:

1
2
3
[root@juispan ~] # cat /usr/local/apache2.4/conf/httpd.conf | grep -i logformat
     LogFormat  "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\""  combined
     LogFormat  "%h %l %u %t \"%r\" %>s %b"  common


3、将common更改成combined,显示更为详细的日志格式

1
2
3
4
5
6
7
8
[root@juispan ~] # tail /usr/local/apache2.4/logs/abc.com-access_log 
192.168.137.100 - - [21 /Jul/2017 :11:38:13 +0800]  "GET HTTP://abc.com/ HTTP/1.1"  403 209
192.168.137.100 - - [21 /Jul/2017 :12:00:52 +0800]  "GET HTTP://abc.com/ HTTP/1.1"  200 7
192.168.137.100 - - [21 /Jul/2017 :12:00:57 +0800]  "GET HTTP://www.abc.com/ HTTP/1.1"  200 7
192.168.137.100 - - [21 /Jul/2017 :12:01:06 +0800]  "GET HTTP://abcd.com/ HTTP/1.1"  200 7
192.168.137.1 - - [21 /Jul/2017 :18:07:04 +0800]  "GET /favicon.ico HTTP/1.1"  404 209  "-"  "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36"
192.168.137.1 - - [21 /Jul/2017 :18:07:06 +0800]  "GET / HTTP/1.1"  200 7  "-"  "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 10.0; WOW64; Trident/8.0; .NET4.0C; .NET4.0E)"
192.168.137.1 - - [21 /Jul/2017 :18:07:22 +0800]  "GET /1.txt HTTP/1.1"  404 203  "-"  "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 10.0; WOW64; Trident/8.0; .NET4.0C; .NET4.0E)"

默认情况下log日志格式为:

1
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined

其中%h 是记录访问者的IP,如果在web的前端有一层代理,那么这个%h其实就是代理机器的IP,这不是我们想要的。

在这种情况下,%{X-FORWARDED-FOR}i  字段会记录客户端真实的IP

▏所以log日志改为:

1
LogFormat "%h %{X-FORWARDED-FOR}i %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined


二、不记录静态文件

    访问日志记录的大量垃圾静态文件(如图片、css、js等)访问信息,影响运维工作效率。

1、配置虚拟主机

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
[root@juispan ~] # vi /usr/local/apache2.4/conf/extra/httpd-vhosts.conf 
<VirtualHost *:80>
     DocumentRoot  "/data/www/abc.com"
     ServerName abc.com
     ServerAlias www.abc.com
     ErrorLog  "logs/abc.com-error_log"
     SetEnvIf Request_URI  ".*\.gif$"  img
     SetEnvIf Request_URI  ".*\.jpg$"  img
     SetEnvIf Request_URI  ".*\.png$"  img
     SetEnvIf Request_URI  ".*\.bmp$"  img
     SetEnvIf Request_URI  ".*\.swf$"  img
     SetEnvIf Request_URI  ".*\.js$"  img
     SetEnvIf Request_URI  ".*\.css$"  img    ##把以gif,jpg等结尾的全部标记为img
     CustomLog  "logs/abc.com-access_log"  combined  env =!img  ##除了img文件,全部都记录
< /VirtualHost >

2、检查重新加载

1
2
3
[root@juispan ~] # /usr/local/apache2.4/bin/apachectl -t
Syntax OK
[root@juispan ~] # /usr/local/apache2.4/bin/apachectl graceful

3、验证效果

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
[root@juispan ~] # curl -x127.0.0.1:80 abcd.com/123.php -I
HTTP /1 .1 404 Not Found
Date: Fri, 21 Jul 2017 10:20:04 GMT
Server: Apache /2 .4.27 (Unix) PHP /7 .1.6
Content-Type: text /html ; charset=iso-8859-1
 
[root@juispan ~] # curl -x127.0.0.1:80 abcd.com/123.gif -I
HTTP /1 .1 404 Not Found
Date: Fri, 21 Jul 2017 10:20:10 GMT
Server: Apache /2 .4.27 (Unix) PHP /7 .1.6
Content-Type: text /html ; charset=iso-8859-1
 
[root@juispan ~] # curl -x127.0.0.1:80 abcd.com/123.png -I
HTTP /1 .1 404 Not Found
Date: Fri, 21 Jul 2017 10:20:17 GMT
Server: Apache /2 .4.27 (Unix) PHP /7 .1.6
Content-Type: text /html ; charset=iso-8859-1
 
[root@juispan ~] # tail /usr/local/apache2.4/logs/abc.com-access_log 
192.168.137.100 - - [21 /Jul/2017 :11:38:13 +0800]  "GET HTTP://abc.com/ HTTP/1.1"  403 209
192.168.137.100 - - [21 /Jul/2017 :12:00:52 +0800]  "GET HTTP://abc.com/ HTTP/1.1"  200 7
192.168.137.100 - - [21 /Jul/2017 :12:00:57 +0800]  "GET HTTP://www.abc.com/ HTTP/1.1"  200 7
192.168.137.100 - - [21 /Jul/2017 :12:01:06 +0800]  "GET HTTP://abcd.com/ HTTP/1.1"  200 7
192.168.137.1 - - [21 /Jul/2017 :18:07:04 +0800]  "GET /favicon.ico HTTP/1.1"  404 209  "-"  "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36"
192.168.137.1 - - [21 /Jul/2017 :18:07:06 +0800]  "GET / HTTP/1.1"  200 7  "-"  "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 10.0; WOW64; Trident/8.0; .NET4.0C; .NET4.0E)"
192.168.137.1 - - [21 /Jul/2017 :18:07:22 +0800]  "GET /1.txt HTTP/1.1"  404 203  "-"  "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 10.0; WOW64; Trident/8.0; .NET4.0C; .NET4.0E)"
127.0.0.1 - - [21 /Jul/2017 :18:20:04 +0800]  "HEAD HTTP://abcd.com/123.php HTTP/1.1"  404 -  "-"  "curl/7.29.0"    ##可以看到过滤后的效果了


三、访问日志切割

    网站每天都在被访问,会记录大量的日志信息。单个大日志文件不方便运维人员的查看,而且还不方便清理过期日志。通过切割日志能很好的解决这个问题。

1、配置虚拟主机

1
2
[root@juispan ~] # cat /usr/local/apache2.4/conf/extra/httpd-vhosts.conf | grep -i customlog 
     CustomLog  "|/usr/local/apache2.4/bin/rotatelogs -l logs/abc.com-access_%Y%m%d.log 86400"  combined  env =!img   ##工具名为:rotatelogs;-l:以当前系统时间为基准

2、检查重新加载

1
2
3
[root@juispan ~] # /usr/local/apache2.4/bin/apachectl -t
Syntax OK
[root@juispan ~] # /usr/local/apache2.4/bin/apachectl graceful

3、测试效果

1
2
3
4
5
6
7
8
9
[root@juispan ~] # curl -x127.0.0.1:80 abcd.com/123.php -I
HTTP /1 .1 404 Not Found
Date: Fri, 21 Jul 2017 10:32:07 GMT
Server: Apache /2 .4.27 (Unix) PHP /7 .1.6
Content-Type: text /html ; charset=iso-8859-1
 
[root@juispan ~] # ls  /usr/local/apache2.4/logs/
123.com-access_log  abc.com-access_20170721.log  abc.com-error_log  error_log
123.com-error_log   abc.com-access_log           access_log         httpd.pid

可以看到生成了一个新的日志文件,后期可以制作一个任务计划,删除过期的日志文件,以防磁盘空间不足。

















本文转自Grodd51CTO博客,原文链接:http://blog.51cto.com/juispan/1952820,如需转载请自行联系原作者

相关实践学习
【涂鸦即艺术】基于云应用开发平台CAP部署AI实时生图绘板
【涂鸦即艺术】基于云应用开发平台CAP部署AI实时生图绘板
相关文章
|
2月前
|
存储 监控 算法
防止员工泄密软件中文件访问日志管理的 Go 语言 B + 树算法
B+树凭借高效范围查询与稳定插入删除性能,为防止员工泄密软件提供高响应、可追溯的日志管理方案,显著提升海量文件操作日志的存储与检索效率。
122 2
|
11月前
|
存储 监控 安全
实时记录和查看Apache 日志
Apache 是一个开源、跨平台的 Web 服务器,保护其平台需监控活动和事件。Apache 日志分为访问日志和错误日志,分别记录用户请求和服务器错误信息。EventLog Analyzer 是一款强大的日志查看工具,提供集中收集、分析、实时警报和安全监控功能,帮助管理员识别趋势、检测威胁并确保合规性。通过直观的仪表板和自动化响应,它简化了大规模日志管理,增强了 Apache 服务器的安全性和性能。
298 5
|
6月前
|
人工智能 运维 监控
Aipy实战:分析apache2日志中的网站攻击痕迹
Apache2日志系统灵活且信息全面,但安全分析、实时分析和合规性审计存在较高技术门槛。为降低难度,可借助AI工具如aipy高效分析日志,快速发现攻击痕迹并提供反制措施。通过结合AI与学习技术知识,新手运维人员能更轻松掌握复杂日志分析任务,提升工作效率与技能水平。
|
8月前
|
监控 安全 BI
优化 Apache 日志记录的 5 个最佳实践
Apache 日志记录对于维护系统运行状况和网络安全至关重要,其核心包括访问日志与错误日志的管理。通过制定合理的日志策略,如选择合适的日志格式、利用条件日志减少冗余、优化日志级别、使用取证模块提升安全性及实施日志轮换,可有效提高日志可用性并降低系统负担。此外,借助 Eventlog Analyzer 等专业工具,能够实现日志的高效收集、可视化分析与威胁检测,从而精准定位安全隐患、评估服务器性能,并满足合规需求,为强化网络安全提供有力支持。
230 0
优化 Apache 日志记录的 5 个最佳实践
|
9月前
|
域名解析 应用服务中间件 网络安全
阿里云个人博客外网访问中断应急指南:从安全组到日志的七步排查法
1. 检查安全组配置:确认阿里云安全组已开放HTTP/HTTPS端口,添加规则允许目标端口(如80/443),授权对象设为`0.0.0.0/0`。 2. 本地防火墙设置:确保服务器防火墙未阻止外部流量,Windows启用入站规则,Linux检查iptables或临时关闭防火墙测试。 3. 验证Web服务状态:检查Apache/Nginx/IIS是否运行并监听所有IP,使用命令行工具确认监听状态。 4. 测试网络连通性:使用外部工具和内网工具测试服务器端口是否开放,排除本地可访问但外网不可的问题。 5. 排查DNS解析:确认域名A记录指向正确公网IP,使用`ping/nslookup`验证解析正
373 2
|
11月前
|
存储 运维 监控
金融场景 PB 级大规模日志平台:中信银行信用卡中心从 Elasticsearch 到 Apache Doris 的先进实践
中信银行信用卡中心每日新增日志数据 140 亿条(80TB),全量归档日志量超 40PB,早期基于 Elasticsearch 构建的日志云平台,面临存储成本高、实时写入性能差、文本检索慢以及日志分析能力不足等问题。因此使用 Apache Doris 替换 Elasticsearch,实现资源投入降低 50%、查询速度提升 2~4 倍,同时显著提高了运维效率。
661 3
金融场景 PB 级大规模日志平台:中信银行信用卡中心从 Elasticsearch 到 Apache Doris 的先进实践
|
存储 监控 安全
实时记录和查看Apache 日志
Apache 是一个开源、跨平台的Web服务器,保护其安全依赖于监控活动和分析访问日志。日志分为访问日志和错误日志,前者记录用户请求及响应情况,后者记录服务器错误信息。EventLog Analyzer等工具可集中收集、分析日志,提供直观的仪表板和实时警报,帮助识别趋势、异常和威胁,确保服务器稳定性和安全性,并支持合规管理。
325 5
|
7月前
|
监控 容灾 算法
阿里云 SLS 多云日志接入最佳实践:链路、成本与高可用性优化
本文探讨了如何高效、经济且可靠地将海外应用与基础设施日志统一采集至阿里云日志服务(SLS),解决全球化业务扩展中的关键挑战。重点介绍了高性能日志采集Agent(iLogtail/LoongCollector)在海外场景的应用,推荐使用LoongCollector以获得更优的稳定性和网络容错能力。同时分析了多种网络接入方案,包括公网直连、全球加速优化、阿里云内网及专线/CEN/VPN接入等,并提供了成本优化策略和多目标发送配置指导,帮助企业构建稳定、低成本、高可用的全球日志系统。
844 54
|
监控 安全 Apache
什么是Apache日志?为什么Apache日志分析很重要?
Apache是全球广泛使用的Web服务器软件,支持超过30%的活跃网站。它通过接收和处理HTTP请求,与后端服务器通信,返回响应并记录日志,确保网页请求的快速准确处理。Apache日志分为访问日志和错误日志,对提升用户体验、保障安全及优化性能至关重要。EventLog Analyzer等工具可有效管理和分析这些日志,增强Web服务的安全性和可靠性。
381 9

推荐镜像

更多