|NO.Z.00054|——————————|^^ 部署 ^^|——|Linux&Apache.V04|——|Apache日志切割|静态缓存|禁止解析PHP|

一、Apache日志切割
### --- Apache日志切割

~~~     我们没访问一次网站,那么就会记录若干条日志,如果日志不去管理,
~~~     时间长了日志文件会越来越大,如何避免产生大的日志文件?
~~~     其实Apache有相关的配置,使用日志按照我们的需求进行归档,
~~~     比如每天一个新日志,或者每小时一个新的日志
### --- 首先简单设置日志的路径名称   #Apache最重要的访问日志access,
### --- 错误日志error是进行排错的

~~~		#编辑添加如下内容:
ErrorLog "logs/error.log"
CustomLog "Logs/access.log" combined                            // combined标签,名称;指定一下日志的格式
~~~		#指定了日志存放在/usr/local/apache2/logs目录下分别为error.log和access.log,
~~~		combined为日志显示的格式,日志格式可以参考配置文件httpd.conf中格式的指定,如下:
~~~		设置Apache日志分割:利用ratatelogs这个工具来切割

LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined           #combined复杂版的日志
LogFormat "%h %l %u %t \"%r\" %>s %b common                     // common简化版的日志格式
### --- 同样编辑配置文件httpd.conf
~~~		#注意1:以上仅为两条命令(一条错误日志,一条访问日志,路径太长写不开
~~~		#注意2:若开启了https,则需要修改http-ssl.conf配置文件中的日志记录条目

[root@server11 ~]# vim /usr/local/apache2/etc/httpd.conf
#ErrorLog "logs/error_log"
ErrorLog "|/usr/local/apache2/bin/rotatelogs -l /usr/local/apache2/logs/error_%Y%m%d.log 86400"     #rotatelogs:Apache日志问题和日志切割命令。-L:标准UTC时区。error_%Y%m%d.log:日志命名时间,年月日,86400:日志更新时间;也就是每天一个新的日志。
    #CustomLog "logs/access_log" common
    CustomLog "|/usr/local/apache2/bin/rotatelogs -l /usr/local/apache2/logs/access_%Y%m%d.log 86400" common
### --- 验证:

[root@server11 ~]# apachectl -t
Syntax OK
[root@server11 ~]# apachectl restart
~~~		ErrorLOG是错误日志,CustomLog是访问日志,|就是管道符,
~~~		意思是把产生的日志交给rotatelog这个工具,而这个工具就是Apache自带的切割日志的工具,
~~~		-l 的作用是校对准时区为UTC,也就是北京时间,86400,单位是秒,
~~~		正好是一天,那么日志会每天切割一次,而最后面的combined为日志的格式,
~~~		在httpd.conf中有意义。

[root@server11 ~]# ls /usr/local/apache2/logs/
access_log  error_20210212.log  error_log                       // 错误日志已经生效,带日志参数
~~~		刷新一下Chrome的10.10.10.11地址的页面,就会显示正确日志

[root@server11 ~]# ls /usr/local/apache2/logs/
access_20210212.log  access_log  error_20210212.log  error_log  // 正确,错误日志都已经写入
二、不记录指定文件类型的日志
### --- 不记录指定文件类型的日志

~~~     如果一个网站访问量特别大,那么访问日志就会很多,但有一些访问日志其实是可以忽略掉的,
~~~     比如网站的一些图片,还有js、css等静态对象,而这些文件的访问往往是巨大的,
~~~     而且即使记录这些日志也没有什么用,那么如何忽略不记录这些日志呢?
### --- 配置日志不寄了图片的访问
~~~		说明:在原来的访问日志配置基础上,增加了一些image-request的定义,
~~~		比如把gif/jpg/bmp/swf/js/css等结尾的全标记为image-request,
~~~		然后在配置日志后加一个标记env=!image-request,表示取反。

[root@server11 ~]# vim /usr/local/apache2/etc/httpd.conf
#相关配置为:利用request_URL来访问到是.gif或者其它加一个日志标签:image-request调用,!:表示不调用。
<Directory "/usr/local/apache2/htdocs">
    SetEnvIf Request_URL "\.gif$" image-request
    SetEnvIf Request_URL "\.ipg$" image-request
    SetEnvIf Request_URL "\.png$" image-request
    SetEnvIf Request_URL "\.bmp$" image-request
    SetEnvIf Request_URL "\.swf$" image-request
    SetEnvIf Request_URL "\.js$" image-request
    SetEnvIf Request_URL "\.css$" image-request
CustomLog "|/usr/local ... _%Y%m%d.log 86400" combined env=!image-request
</Directory>  
### --- 验证:访问图片会记录日志
~~~		若是访问图片不记录日志;添加如下内容;就不记录

[root@server11 ~]# mv JavaBBS.jpg /usr/local/apache2/htdocs/         // 上传一个图片JavaBBS.jpg文件并放置在htdocs下
[root@server11 ~]# tailf /usr/local/apache2/logs/access_20210212.log // 监控一下日志
10.10.10.240 - - [12/Feb/2021:09:14:54 +0800] "GET /JavaBBS.jpg HTTP/1.1" 200 341431
http://10.10.10.11/JavaBBS.jpg                                       // 访问图片会生成一条图片的日志记录,
### --- 验证:访问图片不记录日志

[root@server11 ~]# vim /usr/local/apache2/etc/httpd.conf
<Directory "/usr/local/apache2/htdocs">
    SetEnvIf Request_URL "\.ipg$" image-request
</Directory>
<IfModule log_config_module>
    CustomLog "|/usr/local/apache2/bin/rotatelogs -l /usr/local/apache2/logs/access_%Y%m%d.log 86400" common env=!image-request
</IfModule>
[root@server11 ~]# apachectl -t
Syntax OK
[root@server11 ~]# apachectl restart
[root@server11 ~]# tailf /usr/local/apache2/logs/access_20210212.log 
http://10.10.10.11/JavaBBS.jpg                                      // 访问图片不会生成日志记录 
http://10.10.10.11/JavaBBS.jpg
三、Apache配置静态缓存
### --- Apache配置静态缓存

~~~     所说的静态文件是指图片/js/css等文件,用户访问一个站点,
~~~     其实大多数元素都是图片/js/css等,
~~~     这些静态文件其实是会被客户端的浏览器缓存到本地电脑上的,
~~~     目的就是为了下次再请求时不再去服务器上下载,这样就加快了速度,
~~~     提高快乐用户体验,但这些静态文件总不能一直缓存,它总有一些时效性,
~~~     那么就得设置这个过期时间
### --- 配置静态缓存

[root@server11 ~]# vim /usr/local/apache2/etc/httpd.conf
</Directory>                                                 // 在这个目录下添加
<IfModule mod_expires.c>            
#此模块默认未开启,请手动启用
    ExpiresActive on
    ExpiresByType image/gif "access puls 1 days"
    ExpiresByType image/jpeg "access plus 24 hours"
    ExpiresByType image/png "access plus 25 hours"
    ExpiresByType test/css "access plus 2 hours"
    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>
LoadModule expires_module modules/mod_expires.so             // 开启这个模块
### --- 上传JavaBBS.png图片并移动到htdocs目录下

[root@server11 ~]# apachectl -t
Syntax OK
[root@server11 ~]# apachectl restart
[root@server11 ~]# mv JavaBBS.png /usr/local/apache2/htdocs/ 
### --- 访问:http://10.10.10.11/JavaBBS.png 

[root@server11 ~]# curl -x10.10.10.11:80 'http://10.10.10.11/JavaBBS.png' -I
HTTP/1.1 200 OK
Date: Fri, 12 Feb 2021 01:43:39 GMT
Server: Apache/2.4.7 (Unix) OpenSSL/1.0.2k-fips PHP/7.0.7
Last-Modified: Thu, 11 Feb 2021 09:52:42 GMT
ETag: "39cfc-5bb0c7b0cee80"
Accept-Ranges: bytes
Content-Length: 236796
Cache-Control: max-age=86400                                // 显示有缓存;max最长时间一天,一天时间为86400秒
Expires: Sat, 13 Feb 2021 01:43:39 GMT
Content-Type: image/png 
### --- 或者使用mod_headers模块实现,该模块默认启用  #静态页面缓存配置下面添加

[root@server11 ~]# vim /usr/local/apache2/etc/httpd.conf
<IfModule mod_headers.c>
    # htm,html,txt类的文件缓存为一个小时
    <filesmatch "\.(html|htm|txt)$">
        header  set cache-control "max-age=3600"
    </filesmatch>
</IfModule>
[root@server11 ~]# apachectl -t
Syntax OK
[root@server11 ~]# apachectl restart
[root@server11 ~]# vim /usr/local/apache2/htdocs/abc.html   // 添加一个新的页面
www.abc.com
### --- 验证:http://10.10.10.11/abc.html得到www.abc.com ;可以正常访问

[root@server11 ~]# curl -x10.10.10.11:80 'http://10.10.10.11/abc.html' -I
HTTP/1.1 200 OK
Date: Fri, 12 Feb 2021 01:50:49 GMT
Server: Apache/2.4.7 (Unix) OpenSSL/1.0.2k-fips PHP/7.0.7
Last-Modified: Fri, 12 Feb 2021 01:49:39 GMT
ETag: "c-5bb19d96298d8"
Accept-Ranges: bytes
Content-Length: 12  
cache-control: max-age=3600                                 // 缓存时间为3600秒,缓存一个小时
Content-Type: text/html

#css,js,swf 类的文件缓存一个星期
<filesmatch "\.(css|js|swf)$">
    header  set cache-control "max-age=604800"
</filesmatch>
    #jpg,gif,jpeg,png,ico,flv,pdf等文件缓存一年
    <filesmatch "\.(ico|gif|jpg|jpeg|png|flv|pdf)$">
        header set cache-control "max-age=29030400"
    </filesmatch>
</IfModule>
### --- 说明:
~~~		这里的时间单位可以days,hours甚至是min,两种不同的方法,
~~~		上面使用的是mod_expires,而下面用的是mod_headers,要想使用这些模块,
~~~		必须要事先已经支持,如何查看是否支持,使用命令

[root@server11 ~]# /usr/local/apache2/bin/apachectl -M
四、禁止解析PHP
### --- 禁止解析PHP

~~~     某个目录下禁止解析PHP,这个很有作用,我们做网站安全的时候,这个用的很多,
~~~     比如某些目录可以上传文件,为了避免上传的有木马,所以我们禁止这个目录下面的访问解析PHP
### --- 配置静止解析PHP

[root@server11 ~]# vim /usr/local/apache2/etc/httpd.conf        // 在末尾添加如下内容
<Directory /usr/local/apache2/htdocs/data>
    php_admin_flag engine off
    <filesmatch "(.*)php">
        Order deny,allow
        Deny from all
    </filesmatch>
</Directory>
[root@server11 ~]# mkdir /usr/local/apache2/htdocs/data
[root@server11 ~]# vim /usr/local/apache2/htdocs/data/x.php
<?php
        echo "hello";
[root@server11 ~]# apachectl -t
Syntax OK
[root@server11 ~]# apachectl restart
### --- 验证:http://10.10.10.11/data/x.php
~~~		没有权限;表示禁止解析配置成功

Forbidden
You don't have permission to access /data/x.php on this server. 
### --- 注释刚才的配置信息再次访问

[root@server11 ~]# vim /usr/local/apache2/etc/httpd.conf
#<Directory /usr/local/apache2/htdocs/data>
#    php_admin_flag engine off
#    <filesmatch "(.*)php">
#       Order deny,allow
#       Deny from all
#    </filesmatch>
#</Directory>
### --- 验证:http://10.10.10.11/data/x.php  可以正常访问得到hello   
~~~		PHP解析不受限制,可以正常访问

[root@server11 ~]# apachectl -t
Syntax OK
[root@server11 ~]# apachectl restart

 
 
 
 
 
 
 
 
 

Walter Savage Landor:strove with none,for none was worth my strife.Nature I loved and, next to Nature, Art:I warm'd both hands before the fire of life.It sinks, and I am ready to depart
                                                                                                                                                   ——W.S.Landor

 

 

posted on   yanqi_vip  阅读(18)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
< 2025年3月 >
23 24 25 26 27 28 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 28 29
30 31 1 2 3 4 5

导航

统计

点击右上角即可分享
微信分享提示