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

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

                                                作者:尹正杰

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

 

 

一.日志类型

[root@node101.yinzhengjie.org.cn ~]# ll /var/log/httpd/    #默认存放httpd服务的日志的信息
total 16
-rw-r--r-- 1 root root 4895 Dec  8 08:11 access_log      #访问日志,记录了谁访问网站以及访问的PATH信息,服务端响应状态码等,利用该日志信息可以计算PV,UV,IP地址统计等信息。
-rw-r--r-- 1 root root 5659 Dec  8 08:11 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: 
      通过用户名密码的方式(401)验证(basic,digest)远程用户,并将用户名记录在日志中,非登录访问时,为一个减号"-"      
    %t:
       服务器收到请求时的时间,可以使用"%(format)t"来自定义时间格式哟~
    %r: 
      First line of request,即表示请求报文的首行;记录了此次请求的"方法""URL"以及协议版本,如:GET /news/blog.html HTTP/1.1
    %>s: 
      响应状态码,如:200,304,403等。
    %b:
      响应报文的大小(说白了就是访问服务器资源文件的大小),单位是字节;不包括响应报文http首部
    %{Referer}i:
      请求报文中首部"referer"的值;即从哪个页面中的超链接跳转至当前页面的。
      如果发现从百度页面跳转过来的说明你们公司广告投放效果不错,如果日志记录的是"-",则表示用户直接访问了你们公司的网站,应该是你们公司的铁粉了。
      如果你们发现该记录是从你们公司的竞争对手或者毫不相干的网站来访问的话请注意这就说明你得资源被盗链啦~
      关于防盗链的几种解决方案如下:
        (1)修改资源的名称
        (2)封停公网IP地址(这种做法杀敌一千,自损八百不推荐大家这样干,比如你封停的是一个电信的公网IP地址,假设典型公司有200家公司都走了这个网关地址出去的话,你封停了该IP后的确想要盗链的用户访问不到啦,但这不意味你讲很多正常用户也都封停啦)
        (3)重定向解决,比如可以将不正常的访问重定向登录界面,用户登录成功后,立即将该用户拉入黑名单中,当然这得让开发来配合。可以用到的技术栈可参考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 12
-rw-r--r-- 1 root root 37 Dec  7 09:31 index.html
-rw-r--r-- 1 root root 31 Dec  7 15:11 info.html
-rw-r--r-- 1 root root 19 Dec  7 15:12 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 -1 /var/log/httpd/access_log 
127.0.0.1 - - 2019-12-09 05:14:28 "GET / HTTP/1.1" 200 37 "-" "curl/7.29.0"
[root@node101.yinzhengjie.org.cn ~]# 
posted @ 2019-12-08 06:24  尹正杰  阅读(1237)  评论(0编辑  收藏  举报