LAMP架构(apache访问日志不记录静态文件,静态元素过期时间,apache日志切割)

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介:

一、apache访问日志不访问静态文件

浏览器打开后按f12会会出现一个界面,点network,会出现很多请求,访问日志里会记载,有些静态的图片或者文件也会记载,太浪费磁盘空间和磁盘io。所以我们要让日志不记录静态文件

[root@abc ~]# vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf

    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.jgp,png,bmp.swf.js.css结尾的文件为env。

在CustomLog "logs/111.com-access_log" combined 这一行的最后加上env=!img,表示把除了img的文件记录到日志里。

检查语法错误并退出。


实验:

curl -x127.0.0.1:80 111.com/sadaddas.png1  

curl -x127.0.0.1:80 111.com/sadaddas.png    

访问png1和png两个文件,看看日志会记录哪个?

结果为:png不会被记录,png1会被记录,

1.png

或者上传一张以png结尾的图片在目录里,用浏览器访问,结果还是没有日志


二、apache访问日志切割


日志一直记录总有一天会把整个磁盘沾满,所以有必要让它自动切割,并删除老的日志文件。保证磁盘永远写不满,且更方便的管理日志

vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf

修改  ustomLog "logs/111.com-access_log" combined env=!img   为:

CustomLog "|/usr/local/apache2.4/bin/rotatelogs -l logs/111.com-access_log" combined env=!img

rotatelogs是apache自带的日志切割工具。-l是为了让它以当前系统时间为准,如果不指定。他会以utc时间为基准。

而且根据时间日期还要让他文件有不同的名字。修改111.com-access_log为111.com-access%Y%m%d.log

%Y%m%d分别表示年月日.

还要规定什么时间去切割。一天是86400秒,日志名后面加上86400

检查语法错误并退出。


实验:

访问一个不是静态文件的网址内容

[root@abc ~]# curl -x127.0.0.1:80 111.com/dsd.png1    

发现日志目录里多了一个以当天时间为名的日志文件,里面记录的则是刚Curl的

[root@abc ~]# ls /usr/local/apache2.4/logs/

111.com-access20171126.log  111.com-access_log  111.com-error_log  abc.com  abc.com-access_log  access_log  error_log  httpd.pid

[root@abc ~]# cat /usr/local/apache2.4/logs/111.com-access20171126.log 

127.0.0.1 - - [26/Nov/2017:15:28:31 +0800] "GET HTTP://111.com/dsd.png1 HTTP/1.1" 404 206 "-" "curl/7.29.0"


三、静态元素过期时间

配置静态文件元素过期时间

浏览器访问网站图片时会把静态文件缓存在本地电脑里。这样下次访问就不用再去远程下载了。


实验:

可以在目录里放一个图片,然后用浏览器去访问,且访问之前先F12打开管理页面,点开Network

可以发现,第一次访问时,状态码为200,表示正正常

第二次访问时,状态码为304 Not Modified 表示本地有缓存,且没有修改,所以不需要从新下载。

这样可以节省带宽,但是没有规定失效日期且什么时候清理缓存。


修改:

vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf 

添加:

<IfModule mod_expires.c>

    ExpiresActive on  //打开该功能的开关

    ExpiresByType image/gif  "access plus 1 days"

    ExpiresByType image/jpeg "access plus 24 hours"

    ExpiresByType image/png "access plus 24 hours"

    ExpiresByType text/css "now plus 2 hour"

    ExpiresByType application/x-javascript "now plus 2 hours"

    ExpiresByType application/javascript "now plus 2 hours"

    ExpiresByType application/x-shockwave-flash "now plus 2 hours"

    ExpiresDefault "now plus 0 min"

</IfModule>

expire是apache的一个模块。设置过期时间

检查apache有没有这个模块

[root@abc ~]# /usr/local/apache2.4/bin/apachectl -M |grep expire

如果没有,则需要到主配置文件里修改

搜索expire

在109行,把前面的注释符去掉

保存退出

检查语法错误并重启服务

[root@abc ~]# /usr/local/apache2.4/bin/apachectl -M |grep expire

 expires_module (shared)

apache加载了这个模块。


实验:

ctrl+f5可以强制刷新,把本地缓存清空

再访问图片是状态码显示为200,且下面有cache-control,过期时间为86400秒,也就是一天,还会告诉你过期日期的时间expires,但是时区是GMT.


[root@abc 111.com]# curl -x127.0.0.1:80 111.com/1.png -I

HTTP/1.1 200 OK

Date: Sun, 26 Nov 2017 08:04:11 GMT

Server: Apache/2.4.28 (Unix) PHP/5.6.30

Last-Modified: Sun, 26 Nov 2017 07:07:52 GMT

ETag: "7913-55edd71b4a200"

Accept-Ranges: bytes

Content-Length: 30995

Cache-Control: max-age=86400

Expires: Mon, 27 Nov 2017 08:04:11 GMT

Content-Type: image/png











本文转自 小新锐 51CTO博客,原文链接:http://blog.51cto.com/13407306/2053108,如需转载请自行联系原作者
相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
目录
相关文章
|
4月前
|
存储 消息中间件 Java
Apache Flink 实践问题之原生TM UI日志问题如何解决
Apache Flink 实践问题之原生TM UI日志问题如何解决
48 1
|
4月前
|
存储 监控 数据库
Django 后端架构开发:高效日志规范与实践
Django 后端架构开发:高效日志规范与实践
82 1
|
10天前
|
监控 安全 Apache
什么是Apache日志?为什么Apache日志分析很重要?
Apache是全球广泛使用的Web服务器软件,支持超过30%的活跃网站。它通过接收和处理HTTP请求,与后端服务器通信,返回响应并记录日志,确保网页请求的快速准确处理。Apache日志分为访问日志和错误日志,对提升用户体验、保障安全及优化性能至关重要。EventLog Analyzer等工具可有效管理和分析这些日志,增强Web服务的安全性和可靠性。
|
18天前
|
监控 应用服务中间件 定位技术
要统计Nginx的客户端IP,可以通过分析Nginx的访问日志文件来实现
要统计Nginx的客户端IP,可以通过分析Nginx的访问日志文件来实现
|
3月前
|
设计模式 SQL 安全
PHP中的设计模式:单例模式的深入探索与实践在PHP的编程实践中,设计模式是解决常见软件设计问题的最佳实践。单例模式作为设计模式中的一种,确保一个类只有一个实例,并提供全局访问点,广泛应用于配置管理、日志记录和测试框架等场景。本文将深入探讨单例模式的原理、实现方式及其在PHP中的应用,帮助开发者更好地理解和运用这一设计模式。
在PHP开发中,单例模式通过确保类仅有一个实例并提供一个全局访问点,有效管理和访问共享资源。本文详细介绍了单例模式的概念、PHP实现方式及应用场景,并通过具体代码示例展示如何在PHP中实现单例模式以及如何在实际项目中正确使用它来优化代码结构和性能。
52 2
|
3月前
|
存储 监控 数据可视化
SLS 虽然不是直接使用 OSS 作为底层存储,但它凭借自身独特的存储架构和功能,为用户提供了一种专业、高效的日志服务解决方案。
【9月更文挑战第2天】SLS 虽然不是直接使用 OSS 作为底层存储,但它凭借自身独特的存储架构和功能,为用户提供了一种专业、高效的日志服务解决方案。
179 9
|
4月前
|
Ubuntu Linux 测试技术
在Linux中,已知 apache 服务的访问日志按天记录在服务器本地目录/app/logs 下,由于磁盘空间紧张现在要求只能保留最近7天的访问日志,请问如何解决?
在Linux中,已知 apache 服务的访问日志按天记录在服务器本地目录/app/logs 下,由于磁盘空间紧张现在要求只能保留最近7天的访问日志,请问如何解决?
|
4月前
|
应用服务中间件 Linux nginx
在Linux中,如何统计ip访问情况?分析 nginx 访问日志?如何找出访问页面数量在前十位的ip?
在Linux中,如何统计ip访问情况?分析 nginx 访问日志?如何找出访问页面数量在前十位的ip?
|
4月前
|
网络安全
【Azure Service Bus】启用诊断日志来获取客户端访问Azure Service Bus的IP地址 [2024-03-26 实验结果失败]
【Azure Service Bus】启用诊断日志来获取客户端访问Azure Service Bus的IP地址 [2024-03-26 实验结果失败]
|
4月前
|
消息中间件 Java Kafka
【Azure 事件中心】开启 Apache Flink 制造者 Producer 示例代码中的日志输出 (连接 Azure Event Hub Kafka 终结点)
【Azure 事件中心】开启 Apache Flink 制造者 Producer 示例代码中的日志输出 (连接 Azure Event Hub Kafka 终结点)

推荐镜像

更多
下一篇
DataWorks