apache、nginx、iis日志记录的各个字段内容与含义

Apache

  1. Windows

  1. 日志文件名称路径、访问日志设置

    1. 当我们安装并启动Apache后,Apache会自动生成两个日志文件,这两个日志文件分别是访问日志access.log和错误日志error.log。
    2. Apache配置文件在httpd.conf中,配置Apache访问日志格式。日志记录格式主要有两种,普通型(common)和复合型(combined),安装时默认使用普通型(common)类型日志记录访问信息。

       

2.访问日志格式详解

举一个访问日志access.log中的一个标准记录:

192.168.35.132 - - [01/Apr/2020:12:35:13 +0800] "GET / HTTP/1.1" 200 49

日志字段所代表的内容如下:

1.远程主机IP:表明访问网站的是谁 ——192.168.35.132

2.空白(E-mail):为了避免用户的邮箱被垃圾邮件骚扰,第二项就用"-"取代了

3.空白(登录名):用于记录浏览者进行身份验证时提供的名字。

4.请求时间:用方括号包围,而且采用"公用日志格式"或者"标准英文格式"。 时间信息最后的"+0800"表示服务器所处时区位于UTC之后的8小时。

5.方法+资源+协议:服务器收到的是一个什么样的请求。该项信息的典型格式是"METHOD RESOURCE PROTOCOL",即"方法 资源 协议"。

 METHOD: GET、POST、HEAD、……
RESOURCE: /、index.html、/default/index.php、……(请求的文件)
 PROTOCOL: HTTP+版本号

6.状态代码:请求是否成功,或者遇到了什么样的错误。大多数时候,这项值是200,它表示服务器已经成功地响应浏览器的请求,一切正常。

7.发送字节数:表示发送给客户端的总字节数——49。它告诉我们传输是否被打断(该数值是否和文件的大小相同)。把日志记录中的这些值加起来就可以得知服务器在一天、一周或者一月内发送了多少数据。

 

这里第6条说了,大多数时候这项值是200,那我们在列举一下别的值含义:

"100" : Continue 客户必须继续发出请求

"101" : witching Protocols 客户要求服务器根据请求转换HTTP协议版本

"200" : OK 交易成功

"201" : Created 提示知道新文件的URL

"202" : Accepted 接受和处理,但处理未完成

"203" : Non-Authoritative Information 返回信息不确定或不完整

"204" : No Content 请求收到,但返回信息为空

"205" : Reset Content 服务器完成了请求,用户代理必须复位当前已经浏览过的文件

"206" : Partial Content 服务器已经完成了部分用户的GET请求

"300" : Multiple Choices 请求的资源可在多处得到

"301" : Moved permanently 删除请求数据 

"302" : Found 在其他地址发现了请求数据 

"303" : See Other 建议客户访问其他URL或访问方式 

"304" : Not Modified 客户端已经执行了GET,但文件未变化

"305" : Use Proxy 请求的资源必须从服务器指定的地址得到

"306" : 前一版本HTTP中使用的代码,现行版本中不再使用

"307" : Temporary Redirect 申明请求的资源临时性删除

"400" : Bad Request 错误请求,如语法错误

"401" : Unauthorized 请求授权失败

"402" : Payment Required 保留有效ChargeTo头响应 

"403" : Forbidden 请求不答应

"404" : Not Found 没有发现文件、查询或URl 

"405" : Method Not Allowed 用户在Request-Line字段定义的方法不答应

"406" : Not Acceptable 根据用户发送的Accept拖,请求资源不可访问

"407" : Proxy Authentication Required 类似401,用户必须首先在代理服务器上得到授权 

"408" : Request Time-out 客户端没有在用户指定的饿时间内完成请求

"409" : Conflict 对当前资源状态,请求不能完成

"410" : Gone 服务器上不再有此资源且无进一步的参考地址

"411" : Length Required 服务器拒绝用户定义的Content-Length属性请求

"412" : precondition Failed 一个或多个请求头字段在当前请求中错误 

"413" : Request Entity Too Large 请求的资源大于服务器答应的大小

"414" : Request-URI Too Large 请求的资源URL长于服务器答应的长度

"415" : unsupported Media Type 请求资源不支持请求项目格式

"416" : Requested range not satisfiable请求中包含Range请求头字段,在当前请求资源范围内没有range指示值,请求也不包含If-Range请求头字段

"417" : Expectation Failed 服务器不满足请求Expect头字段指定的期望值

"500" : Internal Server Error 服务器产生内部错误

"501" : Not Implemented 服务器不支持请求的函数

"502" : Bad Gateway 服务器暂时不可用,有时是为了防止发生系统过载

"503" : Service Unavailable 服务器过载或暂停维修

"504" : Gateway Time-out 关口过载,服务器使用另一个关口或服务来响应用户,等待时间设定值较长

"505" : HTTP Version not supported 服务器不支持或拒绝支请求头中指定的HTTP版本

3.错误格式详解

错误日志是最重要的日志文件,其文件名和位置取决于ErrorLog指令。Apache httpd将在这个文件中存放诊断信息和处理请求中出现的错误,由于这里经常包含了出错细节以及如何解决,如果服务器启动或运行中有问题,首先就应该查看这个错误日志。

 

错误日志的格式相对灵活,并可以附加文字描述。

 

错误日志中会包含类似上述例子的多种类型的信息。此外,CGI脚本中任何输出到stderr(标准错误)的信息会作为调试信息原封不动地记录到错误日志中。

 

用户可以增加或删除错误日志的项。但是对某些特殊请求,在访问日志(access.log)中也会有相应的记录,访问日志也可以定制,所以可以从访问日志中得到错误事件的更多信息。

在测试中,对任何问题持续监视错误日志是非常有用的。

下面是拿我自己的举个例子:

[Sun Apr 19 03:20:32.155938 2020] [autoindex:error] [pid 2493] [client 219.140.116.105:47164] AH01276: Cannot serve directory /export/home/live/ap/htdocs/test: No matching DirectoryIndex (index.html,index.php) found, and server-generated directory index forbidden by Options directive

错误日志格式说明:

1.错误发生的日期和时间

2.错误的级别或严重性

3.导致错误的IP地址

4.错误信息本身或者说是原因。

二、Linux——Centos 7

Linux和Windows日志区别只在于它们的位置不一样,其他的通过观察和Windows是一样的。

所以可以直接参考上面描述的内容。

日志位置

默认在/var/log/httpd/文件夹下,有两个日志文件分别是:访问日志access_log和错误日志error_log

 

Nginx

一、Windows

1.日志位置

我们可以在配置文件nginx.conf里查看和更改日志的存放位置

nginx.conf的内容分为以下几段:

main配置段:全局配置段。其中main配置段中可能包含event配置段;

event{}:定义event模型工作特性;

http{}:定义http协议相关配置。

 

日志记录格式:

$remote_addr 与$http_x_forwarded_for 用以记录客户端的ip地址;

$remote_user :用来记录客户端用户名称;

$time_local : 用来记录访问时间与时区;

$request : 用来记录请求的url与http协议;

$status : 用来记录请求状态;成功是200,

$body_bytes_s ent :记录发送给客户端文件主体内容大小;

$http_referer :用来记录从那个页面链接访问过来的;

$http_user_agent :记录客户端浏览器的相关信息;

 

  1. 日志分析

下面是一段日志:

192.168.35.132 - - [18/Apr/2020:17:59:09 +0800] "GET /index.html HTTP/1.1" 200 718 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:75.0) Gecko/20100101 chrome71.0" "-"

 

1.192.168.35.132:客户端(用户)的IP地址

2.- -:客户端的用户名,匿名访问为-

3.[18/Apr/2020:17:59:09 +0800]:访问时间

4."GET /index.html HTTP/1.1":请求方式以及请求的资源URI地址

5.200:状态码

6.718:请求的页面大小

7."-":来源页面,即从哪个页面转到本页

8."Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:75.0) Gecko/20100101 Chrome/71.0":浏览器信息,操作系统信息

9."-":获取到IP,获取不到则显示为 -

 

二、Linux

日志位置

访问日志access.log和错误日志error.log在/var/log/nginx目录下。

配置文件nginx.conf在/etc/nginx目录下。

日志分析

跟Windows是一样的,不再多说。

 

IIS

日志地址

打开IIS管理器,右击你要查看的网站,点击活动日志格式旁边的属性就可以设置日志中要记录的字段

我们也可以知道我们日志文件目录的位置和日志文件名。

日志分析

#Software: Microsoft Internet Information Services 7.5

#Version: 1.0

#Date: 2020-04-18 12:16:25

#Fields: date time s-sitename s-computername s-ip cs-method cs-uri-stem cs-uri-query s-port cs-username c-ip cs-version cs(User-Agent) cs(Cookie) cs(Referer) cs-host sc-status sc-substatus sc-win32-status sc-bytes cs-bytes time-taken

 

  1. date: 发出请求时候的日期。
  2. time: 发出请求时候的时间。注意:默认情况下这个时间是格林威治时间,比我们的北京时间晚8个小时。
  3. s-sitename:服务名,记录当记录事件运行于客户端上的Internet服务的名称和实例的编号。
  4. s-ip:服务器的IP地址。
  5. cs-method:请求中使用的HTTP方法,GET/POST。
  6. cs-uri-stem:URI资源,记录做为操作目标的统一资源标识符(URI),即访问的页面文件。
  7. cs-uri-query:URI查询,记录客户尝试执行的查询,只有动态页面需要URI查询,如果有则记录,没有则以连接符-表示。即访问网址的附带参数。
  8. s-port:为服务配置的服务器端口号。
  9. cs-username:用户名,访问服务器的已经过验证用户的名称,匿名用户用连接符-表示。
  10. c-ip:客户端IP地址。
  11. cs(User-Agent):用户代理,客户端浏览器、操作系统等情况。
  12. sc-status:协议状态,记录HTTP状态代码,200表示成功,403表示没有权限,404表示找不到该页面。
  13. sc-substatus:协议子状态,记录HTTP子状态代码
  14. sc-win32-status:Win32状态,记录Windows状态代码。
  15. sc-bytes:服务器发送的字节数。
  16. cs-bytes:服务器接受的字节数。
  17. time-taken:记录操作所花费的时间,单位是毫秒。

 

然后对数据进行筛选,去掉数据相同的列。主要观察用户ip ,用户代理,用户访问的页面以及http状态码。

通过用户代理的观察,可以知道是否有蜘蛛来过,蜘蛛看过那些页面,返回状态码是什么。如果返回404,那么马上对该页面进行检查是否存在或者是否设置了访问权限。也可以看是否有同一IP恶意浏览你网站。

posted @ 2020-04-19 13:51  戚源  阅读(423)  评论(0编辑  收藏  举报