做了几年PHP,老板、经理没说让我管过日志这东西。一般牵涉到日志运维这主要是运维的工作。但是这一章节主要是以拔高性质为主。分析日志的管理方式。PHP程序员不能光靠PHP成为高手,PHP不就if else那几样吗?光靠PHP是不行的。

说明该server(虚拟主机),它的访问日志的文件是  logs/host.access.log

remote_addr是远程地址。你去面试的时候经常会碰到一些问题:启动pid去获取来访者的远程ip信息,$remote_user [$time_local]远程的用户访问的时间,当然我访问的那一瞬间我的http头信息未必带了这个信息过去,没带过去那就没有空着。

请求分GET和POST,请求都是用GET来请求。remote_user远程用户,并没有用http头交互说我是谁的那个形式,就是405还有权限验证那个玩意。就是我remote_user为空,但是time_local记录下来了。你当时几点几分来访问,用什么样的请求头来访问的,或者说是请求形式来请求的,用的是GET方式来请求的,而且用的是HTTP1.1这个协议。Status是请求的状态,学过HTTP协议知道有:200(OK),304(Not Modified),404(Not Found),403(Forbidden)。刚才几次访问的状态是404,304和200全了。body_bytes_sent就是我给你的几个主体发送几个字节。有570个字节,168个字节,32个字节,0个字节和46个字节。http_referer,就是你上一个/上一次页面来自于哪里,上一个页面来自于哪里。为什么有时候我们登录别人的网站,尤其是统计类的网站,统计说,咱们这个会员、咱们这个用户登录都来自于哪里。它这个统计怎么知道咱们这个会员是从百度来的呢,是从360来的呢,是从搜狗来的呢,它是如何知道的呢?

这是因为你在百度上一搜,比如搜php培训,你一点某个词条,你当前停留在哪里?你当前停留在百度,你一点带了一个referer信息过去,所以咱们这个统计就知道你来自于哪里。百度,你从百度搜索过来的。以后咱们做文件的防盗链和图片的防盗链也是要靠referer信息。


user_agent,用户代理。你去请求的时候,浏览器帮我们发的请求,我们想读人家的网页,但是我们无法跑人家服务器上读人家的字节,0101这样去读取。我们得靠浏览器去帮忙。所以这个浏览器被称之为用户代理。一分析知道了,你是Mozilla/5.0 (Windows NT 6.1; WOW64),火狐浏览器,win 7机器,有时候见到签名那很炫,你来自于哪里哪里,什么欢迎你北京联通的用户。你使用的是火狐,就是从你referer头信息读取出来的。


x_forwarded_for。网易新闻的评论,来自朝鲜的网友说:,这个网友不是真的来自朝鲜(实际上朝鲜能不能上网还是个问题)。

163会拿最后一次的x-forwarded-for来做判断,一判断说哦,来自于朝鲜的用户。

以后你要想伪装自己的IP,你也可以用x_forwarded_for来伪装一下。但是有些机器不看你x_forwarded_for,就直接看你的remote_addr。这个时候主动权在服务器端,看它以哪一个为准了。


所以这就是日志的main格式。你要是看这个格式不爽,可以把main格式的变量自由组合,去掉几个也行。main格式只是一种拿着几个变量组合的一种形式而已。


刚才user_agent只说了一半,有时候一读你的日志发现不对劲,既不是火狐,也不是IE,也不是chrome,这个有可能是蜘蛛。蜘蛛爬到你的服务器上去了,你需要买一些bus消毒液和一些除蟑螂的药等等,把你的服务器彻底清理一下。网络上有一种机器叫做蜘蛛,其实就是搜索引擎的服务器。它们的服务器一天到晚没事就沿着网络上的链接到处走到处爬,把你的信息都给爬取出来。有一种协议叫做蜘蛛协议,有些人老是过来采集我的信息,你到底是谁,我把你封了。所以这个时候百度说:别封,我是百度蜘蛛。所以User-agent叫Baiduspider,谷歌叫Googlebot,MSN叫MSNBot。Disallow是不允许扫的地址。

/shifen/原来是百度竞价,怪不得不允许人家扫。

这个蜘蛛是要满足一定的协议的,这个协议不是强制的,只能靠道德去规范。淘宝三年前把百度的蜘蛛给屏蔽了,你在百度上搜淘宝它的链接信息就比较少。这个时候就不能去索引它的信息了。技术上耍赖肯定行,人家只是说不让你搜,你要硬搜别人也很难挡住,除非屏蔽你的IP地址。因为目前蜘蛛只是一个协议,所以有时候在自己的日志上看到Baiduspider,你就知道百度蜘蛛来光顾你了,说明你的网站质量还不错。


每个网站它访问的日志不一样啊,分开放是天经地义的,但是有的WEB服务器不支持。比如像lighttp它就不支持。

到底如何配置访问日志呢?

刚才我也没配置任何的访问日志,为神马logs下面还会有访问access.log。很简单,因为你系统一启动它默认就使的是main格式,而且是放在logs/access.log下面。那你要是自己配置了它就有自己独特的日志了。说了那么多其实一句话搞定,之前的都是铺垫。

软重启nginx服务出错

main格式被注释掉了,解开它的注释

然后刷多几次网站z.com的访问量

可以查看到网站z.com的访问日志了,都是来自于IP:192.168.118.1的访问。

有时候会发现网站的访问量急剧上升,心中一阵暗喜,但后来发现所有的访问量都来自于IP某某某某,这个时候你不要高兴。要不就是蜘蛛疯狂地爬你的网站,有时候蜘蛛疯狂地爬也能把一个网站爬崩溃的,蜘蛛很强大。还有一种情况就是来自于你的竞争对手的攻击,看你的网站很火,用两台机器不断地朝你的服务器/网站发送请求,就好比说这个人买了三部电话轮流拨你的手机,那你的手机疲于应付了,这不就是攻击你吗?要想分析谁攻击我,怎么防范,这个时候就得从日志着手,分析它的来源,以及它的请求的页面,看看是先把它的IP给封住,或者把它的请求、把特别敏感的页面给暂停啊等等。所以这就是关于它的日志的配置。


日志还牵涉到运维的工作,那这个日志哪里体现出运维了呢?如果我的网站访问量比较大,那有可能一个小时两个小时都积累很多了,一天下来这个日志得一个GB,一天一个GB的访问量一点不夸张。这个日志要是一直都存在一个文件里面,那肯定是:第一你后期不好处理日志,个个日志都十几个GB这么大你怎么处理啊。不好读啊,技术员一打开就卡死了。另外不好管理不好归档,希望每天的日志能按照日期备份,每天产生一个新日志,思路是:

再加上Linux的定时任务,那么同学们先把这个任务研究一下。下节课讲定时任务和日志切割。

04-nginx日志管理的更多相关文章

  1. Nginx教程(三) Nginx日志管理

    Nginx教程(三) Nginx日志管理 1 日志管理 1.1 Nginx日志描述 通过访问日志,你可以得到用户地域来源.跳转来源.使用终端.某个URL访问量等相关信息:通过错误日志,你可以得到系统某 ...

  2. nginx之旅(第二篇):nginx日志管理、nginx防盗链、nginx虚拟主机

    一.nginx日志管理 Nginx访问日志主要有两个参数控制 1) log_format #用来定义记录日志的格式(可以定义多种日志格式,取不不同名字即可) log_format log_name s ...

  3. Nginx教程(三) Nginx日志管理 (转)

    Nginx教程(三) Nginx日志管理 1 日志管理 1.1 Nginx日志描述 通过访问日志,你可以得到用户地域来源.跳转来源.使用终端.某个URL访问量等相关信息:通过错误日志,你可以得到系统某 ...

  4. nginx 日志管理

    日志管理 我们观察nginx的server段,可以看到如下类似信息 #access_log  logs/host.access.log  main; 这说明 该server, 它的访问日志的文件是  ...

  5. nginx 日志管理配置详解

    nginx的日志管理 log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$statu ...

  6. Nginx日志管理

    1 日志管理 1.1 Nginx日志描述 通过访问日志,你可以得到用户地域来源.跳转来源.使用终端.某个URL访问量等相关信息:通过错误日志,你可以得到系统某个服务或server的性能瓶颈等.因此,将 ...

  7. nginx日志管理与限速

    1.日志简介nginx日志主要有两种:访问日志和错误日志.访问日志主要记录客户端访问nginx的每一个请求,格式可以自定义:错误日志主要记录客户端访问nginx出错时的日志,格式不支持自定义.两种日志 ...

  8. Nginx日志管理(四)

    Nginx日志对于统计.系统服务排错很有用.Nginx日志主要分为两种:access_log(访问日志)和error_log(错误日志).通过访问日志我们可以得到用户的IP地址.浏览器的信息,请求的处 ...

  9. Nginx日志管理配置

    1.创建日志目录 nginx 的默认日志目录所在硬盘空间可能比较小,所以根据硬盘的空间状况创建日志目录 例如:mkdir /backup/nginx_logs 2.修改nginx配置文件 配置 ngi ...

  10. Nginx_地址重写(rewrite)_日志管理(log_format)_压缩输出_Nginx设定限速_Nginx设置反向代理及反向代理缓存

    Nginx地址重写 Nginx rewrite rewrite语法规则1).变量名可以使用 "=" 或 "!=" 运算符~ 区分大小写~* 不区分大小写^~ 禁 ...

随机推荐

  1. POJ 2954 Triangle (pick 定理)

    题目大意:给出三个点的坐标,问在这三个点坐标里面的整数坐标点有多少个(不包含边上的) 匹克定理:I = (A-E) / 2 + 1; A: 表示多边形面积 I : 表示多边形内部的点的个数 E: 表示 ...

  2. HDU - 6430:TeaTree (线段树合并)

    Recently, TeaTree acquire new knoledge gcd (Greatest Common Divisor), now she want to test you. As w ...

  3. HihoCoder1621 : 超市规划(四边形DP优化)()

    超市规划 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 小Hi居住的城市的中轴线恰好是一条马路.沿着这条马路一共坐落有N个居民小区,其中第i个小区距离马路一端的距离是A ...

  4. CSS 属性:touch-action

    CSS 属性 touch-action 用于指定某个给定的区域是否允许用户操作,以及如何响应用户操作(比如浏览器自带的划动.缩放等). /* Keyword values */ touch-actio ...

  5. Windows 特殊文件夹

    收藏的XP的一些特殊文件夹,使用方法:在任意位置用以下文件名创建文件夹即可. 目前还有些可以在WIN7下正常使用,以此作为一个存档,便于日后查询.   回收站.{645ff040-5081-101b- ...

  6. C语言词法分析:C#源码

    今天继续研究代码解析的算法 这个是算法流程图 有图解可能更直观一点: 以下是c#源码:   1using System;   2using System.IO;   3using System.Tex ...

  7. bootstrap table 兼容ie8 -- refreshOptions

    今天项目使用 bootstrap table 在ie8下发现 方法 refreshOptions 报错. 经过调试监控发现错误如下: 153 行 代码 Object.getOwnPropertyNam ...

  8. Hadoop体系结构之 Yarn

    1.1 YARN 基本架构 YARN是Hadoop 2.0中的资源管理系统,它的基本设计思想是将MRv1中的JobTracker拆分成了两个独立的服务:一个全局的资源管理器ResourceManage ...

  9. $GLOBALS超级全局变量(PHP学习)

    1.$GLOBALS是一个数组,里面有所有的全局变量 2.$GLOBALS是超级全局变量,函数内部可以通过它直接操作全局变量.(严重不推荐,因为违反了封装原则) 3.通过$GLOBALS操作全局变量, ...

  10. VM 修改 virtualHW.version

    1.修改BT5R3-GNOME-VM-32.vmdk文件 将encoding="windows-1252"修改为encoding="GBK" 将ddb.virt ...