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日志并进行多维度分析。
目录
相关文章
|
1月前
|
存储 消息中间件 缓存
独特架构打造新一代消息队列Apache Pulsar
Apache Pulsar 是一个开源的分布式消息流平台,由雅虎开发并于 2016 年开源,2018 年成为 Apache 顶级项目。Pulsar 通过独特的架构提供多租户、持久化存储和批处理等高级功能,支持高吞吐量、低延迟的消息传递。其核心组件包括 Broker、Apache BookKeeper 和 Apache ZooKeeper,分别负责消息处理、持久化存储和集群管理。
78 1
|
2月前
|
存储 SQL Apache
Apache Doris 开源最顶级基于MPP架构的高性能实时分析数据库
Apache Doris 是一个基于 MPP 架构的高性能实时分析数据库,以其极高的速度和易用性著称。它支持高并发点查询和复杂分析场景,适用于报表分析、即席查询、数据仓库和数据湖查询加速等。最新发布的 2.0.2 版本在性能、稳定性和多租户支持方面有显著提升。社区活跃,已广泛应用于电商、广告、用户行为分析等领域。
Apache Doris 开源最顶级基于MPP架构的高性能实时分析数据库
|
2月前
|
分布式计算 大数据 Apache
Apache Spark & Paimon Meetup · 北京站,助力 LakeHouse 架构生产落地
2024年11月15日13:30北京市朝阳区阿里中心-望京A座-05F,阿里云 EMR 技术团队联合 Apache Paimon 社区举办 Apache Spark & Paimon meetup,助力企业 LakeHouse 架构生产落地”线下 meetup,欢迎报名参加!
121 3
|
3月前
|
SQL 存储 分布式计算
大数据-157 Apache Kylin 背景 历程 特点 场景 架构 组件 详解
大数据-157 Apache Kylin 背景 历程 特点 场景 架构 组件 详解
60 9
|
3月前
|
存储 分布式计算 druid
大数据-155 Apache Druid 架构与原理详解 数据存储 索引服务 压缩机制
大数据-155 Apache Druid 架构与原理详解 数据存储 索引服务 压缩机制
97 3
|
3月前
|
存储 SQL 缓存
Apache Doris 3.0 里程碑版本|存算分离架构升级、湖仓一体再进化
从 3.0 系列版本开始,Apache Doris 开始支持存算分离模式,用户可以在集群部署时选择采用存算一体模式或存算分离模式。基于云原生存算分离的架构,用户可以通过多计算集群实现查询负载间的物理隔离以及读写负载隔离,并借助对象存储或 HDFS 等低成本的共享存储系统来大幅降低存储成本。
Apache Doris 3.0 里程碑版本|存算分离架构升级、湖仓一体再进化
|
2月前
|
XML 安全 Java
【日志框架整合】Slf4j、Log4j、Log4j2、Logback配置模板
本文介绍了Java日志框架的基本概念和使用方法,重点讨论了SLF4J、Log4j、Logback和Log4j2之间的关系及其性能对比。SLF4J作为一个日志抽象层,允许开发者使用统一的日志接口,而Log4j、Logback和Log4j2则是具体的日志实现框架。Log4j2在性能上优于Logback,推荐在新项目中使用。文章还详细说明了如何在Spring Boot项目中配置Log4j2和Logback,以及如何使用Lombok简化日志记录。最后,提供了一些日志配置的最佳实践,包括滚动日志、统一日志格式和提高日志性能的方法。
814 31
【日志框架整合】Slf4j、Log4j、Log4j2、Logback配置模板
|
1月前
|
监控 安全 Apache
什么是Apache日志?为什么Apache日志分析很重要?
Apache是全球广泛使用的Web服务器软件,支持超过30%的活跃网站。它通过接收和处理HTTP请求,与后端服务器通信,返回响应并记录日志,确保网页请求的快速准确处理。Apache日志分为访问日志和错误日志,对提升用户体验、保障安全及优化性能至关重要。EventLog Analyzer等工具可有效管理和分析这些日志,增强Web服务的安全性和可靠性。
|
3月前
|
XML JSON Java
Logback 与 log4j2 性能对比:谁才是日志框架的性能王者?
【10月更文挑战第5天】在Java开发中,日志框架是不可或缺的工具,它们帮助我们记录系统运行时的信息、警告和错误,对于开发人员来说至关重要。在众多日志框架中,Logback和log4j2以其卓越的性能和丰富的功能脱颖而出,成为开发者们的首选。本文将深入探讨Logback与log4j2在性能方面的对比,通过详细的分析和实例,帮助大家理解两者之间的性能差异,以便在实际项目中做出更明智的选择。
428 3
|
27天前
|
SQL 关系型数据库 MySQL
MySQL事务日志-Undo Log工作原理分析
事务的持久性是交由Redo Log来保证,原子性则是交由Undo Log来保证。如果事务中的SQL执行到一半出现错误,需要把前面已经执行过的SQL撤销以达到原子性的目的,这个过程也叫做"回滚",所以Undo Log也叫回滚日志。
MySQL事务日志-Undo Log工作原理分析

推荐镜像

更多