Httpd服务入门知识-Httpd服务常见配置案例之日志设定

                                                作者:尹正杰

版权声明:原创作品,谢绝转载!否则将追究法律责任。

一.日志类型

[root@node101.yinzhengjie.org.cn ~]# ll /var/log/httpd/    #默认存放httpd服务的日志的信息
total
-rw-r--r-- root root Dec : access_log      #访问日志,记录了谁访问网站以及访问的PATH信息,服务端响应状态码等,利用该日志信息可以计算PV,UV,IP地址统计等信息。
-rw-r--r-- root root Dec : error_log       #错误日志,记录了服务启动的相关,访问被拒绝等相关信息
[root@node101.yinzhengjie.org.cn ~]#
[root@node101.yinzhengjie.org.cn ~]# egrep -v "^ *#|^$" /etc/httpd/conf/httpd.conf | grep ErrorLog      #主配置文件默认定义错误日志位置信息
ErrorLog "logs/error_log"
[root@node101.yinzhengjie.org.cn ~]#
[root@node101.yinzhengjie.org.cn ~]#
[root@node101.yinzhengjie.org.cn ~]# egrep -v "^ *#|^$" /etc/httpd/conf/httpd.conf | grep CustomLog      #主配置文件默认定义访问日志位置信息
CustomLog "logs/access_log" combined
[root@node101.yinzhengjie.org.cn ~]#

二.错误日志相关配置

错误日志:
  ErrorLog logs/error_log
  LogLevel warn
  LogLevel 可选值: debug, info, notice, warn,error, crit, alert, emerg

三.访问日志相关配置

[root@node101.yinzhengjie.org.cn ~]# egrep -v "^ *#|^$" /etc/httpd/conf/httpd.conf | grep combined      #查看默认的日志格式
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %I %O" combinedio
CustomLog "logs/access_log" combined
[root@node101.yinzhengjie.org.cn ~]# 以上默认日志格式变量combined的参数解释:
    %h:
      远程客户端IP地址
    %l:
      远程用户,启用mod_ident才有效,默认没有启用,因此在日志中咱们通常看到记录为减号"-"      
    %u:
      通过用户名密码的方式()验证(basic,digest)远程用户,并将用户名记录在日志中,非登录访问时,为一个减号"-"      
    %t:
       服务器收到请求时的时间,可以使用"%(format)t"来自定义时间格式哟~
    %r:
      First line of request,即表示请求报文的首行;记录了此次请求的"方法","URL"以及协议版本,如:GET /news/blog.html HTTP/1.1
    %>s:
      响应状态码,如:,,403等。
    %b:
      响应报文的大小(说白了就是访问服务器资源文件的大小),单位是字节;不包括响应报文http首部
    %{Referer}i:
      请求报文中首部"referer"的值;即从哪个页面中的超链接跳转至当前页面的。
      如果发现从百度页面跳转过来的说明你们公司广告投放效果不错,如果日志记录的是"-",则表示用户直接访问了你们公司的网站,应该是你们公司的铁粉了。
      如果你们发现该记录是从你们公司的竞争对手或者毫不相干的网站来访问的话请注意这就说明你得资源被盗链啦~
      关于防盗链的几种解决方案如下:
        ()修改资源的名称
        ()封停公网IP地址(这种做法杀敌一千,自损八百不推荐大家这样干,比如你封停的是一个电信的公网IP地址,假设典型公司有200家公司都走了这个网关地址出去的话,你封停了该IP后的确想要盗链的用户访问不到啦,但这不意味你讲很多正常用户也都封停啦)
        ()重定向解决,比如可以将不正常的访问重定向登录界面,用户登录成功后,立即将该用户拉入黑名单中,当然这得让开发来配合。可以用到的技术栈可参考Kafka,Spark,Fink等大数据技术。
    %{User-Agent}i:
      请求报文中首部"User-Agent"的值;即发出请求的应用程序,比如火狐浏览器,谷歌浏览器或者是curl命令以及自己编写的应用程序等。

四.自定义访问日志的格式

访问日志:
  定义日志格式:LogFormat format strings
  LogFormat "%h %l %u %{%Y-%m-%d %H:%M:%S}t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" testlog
  使用日志格式:
    CustomLog logs/access_log testlog   博主推荐阅读:
    http://httpd.apache.org/docs/2.4/mod/mod_log_config.html#formats

1>.在主配置文件中自定义日志格式并重启服务

[root@node101.yinzhengjie.org.cn ~]# grep testlog /etc/httpd/conf/httpd.conf
LogFormat "%h %l %u %{%Y-%m-%d %H:%M:%S}t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" testlog
CustomLog "logs/access_log" testlog
[root@node101.yinzhengjie.org.cn ~]#
[root@node101.yinzhengjie.org.cn ~]# httpd -t
Syntax OK
[root@node101.yinzhengjie.org.cn ~]#
[root@node101.yinzhengjie.org.cn ~]# systemctl restart httpd
[root@node101.yinzhengjie.org.cn ~]#

2>.测试配置是否生效

[root@node101.yinzhengjie.org.cn ~]# ll /var/www/html/
total
-rw-r--r-- root root Dec : index.html
-rw-r--r-- root root Dec : info.html
-rw-r--r-- root root Dec : student.html
[root@node101.yinzhengjie.org.cn ~]#
[root@node101.yinzhengjie.org.cn ~]# cat /var/www/html/index.html
https://www.cnblogs.com/yinzhengjie/
[root@node101.yinzhengjie.org.cn ~]#
[root@node101.yinzhengjie.org.cn ~]# curl http://127.0.0.1/
https://www.cnblogs.com/yinzhengjie/
[root@node101.yinzhengjie.org.cn ~]#
[root@node101.yinzhengjie.org.cn ~]# tail - /var/log/httpd/access_log
127.0.0.1 - - -- :: "GET / HTTP/1.1" "-" "curl/7.29.0"
[root@node101.yinzhengjie.org.cn ~]#

Httpd服务入门知识-Httpd服务常见配置案例之日志设定的更多相关文章

  1. Httpd服务入门知识-Httpd服务常见配置案例之虚拟主机

    Httpd服务入门知识-Httpd服务常见配置案例之虚拟主机 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.虚拟主机实现方案 1>.Apache httpd 有三种实现虚 ...

  2. Httpd服务入门知识-Httpd服务常见配置案例之Apache的工作做状态status页面

    Httpd服务入门知识-Httpd服务常见配置案例之Apache的工作做状态status页面 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.status功能概述 status页 ...

  3. Httpd服务入门知识-Httpd服务常见配置案例之ServerSignature指令选项

    Httpd服务入门知识-Httpd服务常见配置案例之ServerSignature指令选项 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.ServerSignature指令概述 ...

  4. Httpd服务入门知识-Httpd服务常见配置案例之实现用户家目录的http共享

    Httpd服务入门知识-Httpd服务常见配置案例之实现用户家目录的http共享 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.实现用户家目录的http共享前提 在配置家目录共 ...

  5. Httpd服务入门知识-Httpd服务常见配置案例之定义路径别名

    Httpd服务入门知识-Httpd服务常见配置案例之定义路径别名 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任.   一.创建测试数据 [root@node101.yinzhengj ...

  6. Httpd服务入门知识-Httpd服务常见配置案例之设定默认字符集

    Httpd服务入门知识-Httpd服务常见配置案例之设定默认字符集 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.查看生产环境中使用的字符集案例 1>.查看腾讯设置的默认 ...

  7. Httpd服务入门知识-Httpd服务常见配置案例之基于客户端来源地址实现访问控制

    Httpd服务入门知识-Httpd服务常见配置案例之基于客户端来源地址实现访问控制 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.Options  1>.OPTIONS指 ...

  8. Httpd服务入门知识-Httpd服务常见配置案例之基于用户账号实现访问控制

    Httpd服务入门知识-Httpd服务常见配置案例之基于用户账号实现访问控制 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.基于用户的访问控制概述 认证质询: WWW-Auth ...

  9. Httpd服务入门知识-Httpd服务常见配置案例之定义站点主页面及错误页面配置

    Httpd服务入门知识-Httpd服务常见配置案例之定义站点主页面及错误页面配置 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.定义站点主页面 [root@node101.yi ...

随机推荐

  1. matplotlib 柱状图

    222 # coding utf-8 # import matplotlib import numpy as np import matplotlib.pyplot as plt import mat ...

  2. 【技术博客】Laravel5.1文件上传单元测试

    Laravel5.1文件上传单元测试 作者:ZGJ 在软工第三阶段中,我彻底解决了上一阶段一直困扰我的文件上传单元测试问题,在这里做一个总结. 注:下文介绍中,方法一方法二实现简单但有一定的限制条件( ...

  3. [Gamma]Scrum Meeting#10

    github 本次会议项目由PM召开,时间为6月5日晚上10点30分 时长15分钟 任务表格 人员 昨日工作 下一步工作 木鬼 撰写博客,组织例会 撰写博客,组织例会 swoip 前端显示屏幕,翻译坐 ...

  4. Solr7.x学习(7)-JAVA操作

    maven依赖 <dependency> <groupId>org.apache.solr</groupId> <artifactId>solr-sol ...

  5. 正则表达式之re模块

    re模块一.什么是正则表达式与re模块?1.1 字符组1.2 元字符1.2.1 单个使用1.2.2 组合使用二.为什么要使用正则三.如何使用3.1 re模块的三种比较重要的方法3.1.1 findal ...

  6. 钉钉与wcp知识库集成工具

    dingding-wcp 钉钉(dingding)的wcp(知识库)集成通知,非常简单的小工具.(wcp版本 V.free.4.0.4) git: https://gitee.com/chejiang ...

  7. 【题解】分离与合体 [Loj10151]

    [题解]分离与合体 [Loj10151] 传送门:分离与合体 \([Loj10151]\) [题目描述] 给定一个长度为 \(n\) 的序列,如果从某个点 \(k\) 处将区间 \([l,r]\) 断 ...

  8. easyui-datagrid 加载数据 的两种方法

    var start_date_entered=$('#start_date_entered').val(); //创建时间 var stop_date_entered=$('#stop_date_en ...

  9. [转] js async await 终极异步解决方案

    阅读目录 回顾 Promise async await 字面理解 async.await 如何执行 await 操作符 总结 既然有了promise 为什么还要有async await ? 当然是pr ...

  10. 面对代码中过多的if...else的解决方法

    原 6个实例详解如何把if-else代码重构成高质量代码 置顶 2017年09月11日 23:47:12 yinnnnnnn 阅读数 21433更多 分类专栏: # 理论   版权声明:本文为博主原创 ...