Apache

日志位置

在linux系统中,apache也就是apache2,默认的位置是在/var/log/apache2目录下,错误日志为error.log,访问日志一般带有access.log。

访问日志分析

日志示例

192.168.1.20 - - [22/Apr/2020:15:27:49 +0800] "GET /1/index.php HTTP/1.1" 404 490 "-" "Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:45.0) Gecko/20100101 Firefox/45.0"

依次各字段的含义为

远端主机名+客户端日志名称(可空)+客户端用户名(可空)+服务器时间+请求内容(方法名、地址和http协议)+响应的http状态码的最终结果+服务器发送的字节数+来源页+客户端信息

apache的日志格式也可以去自定义,所在的配置文件在/etc/apache2/apache2.conf文件里的,可以使用vim打开,然后/Logformat进行查找,一般有下面五种格式,当然也可以根据自己的需要进行修改。

LogFormat "%v:%p %h %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\"" vhost_combined
LogFormat "%h %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\"" combined
LogFormat "%h %l %u %t \"%r\" %>s %O" common
LogFormat "%{Referer}i -> %U" referer
LogFormat "%{User-agent}i" agent

具体的参数说明请参考阿里云Apache 日志文档,此次我的例子使用的是默认的combined格式。

window下日志的目录在apache安装目录的logs下。

Nginx

日志位置

Nginx的配置文件的路径是/etc/nginx/nginx.conf,在配置文件中搜索access_log可找到日志的默认路径,一般为/var/logs/nginx目录下,访问日志名称为access.log。

访问日志分析

日志示例

192.168.1.220 - - [10/Jul/2020:15:51:09 +0800] "GET /ubuntu.iso HTTP/1.0" 0.000 129 404 168 "-" "Wget/1.11.4 Red Hat modified"

各字段的含义依次为:

客户端ip地址 + - +客户端用户名称(可空)+通用日志格式下的本地时间 + 请求的URL和HTTP协议 + 请求处理时间 + 请求的长度 + 请求状态 + 发送给客户端的字节数(不包括响应头大小)+ 源页面 + 客户端信息

当然,nginx的日志格式也是可以进行定义的,也是在配置文件中进行配置,打开配置文件后搜索log_format就能找到日志格式的定义。例子中的格式如下:

log_format main  '$remote_addr - $remote_user [$time_local] "$request" '
                 '$request_time $request_length '
                 '$status $body_bytes_sent "$http_referer" '
                 '"$http_user_agent"';

参考自阿里云Nginx日志文档,其他字段的名称及含义也可以进行查询。

windows下Nginx日志默认在Nginx安装目录下的logs下。

IIS

日志位置

IIS的日志位置与IIS的版本号的不同也有不同,相关配置文件的位置也有不同。

版本

日志位置

配置文件位置

IIS6

C:\Windows\System32\LogFiles

C:\WINDOWS\system32\inetsrv\MetaBase.xml

IIS7

C:\inetpub\logs\LogFiles

C:\Windows\System32\inetsrv\config\applicationHost.config

由于手头没有IIS服务器,所以无法进行验证,如有错误请联系修改。

日志字段

#Software: Microsoft Internet Information Services 7.5
#Version: 1.0
#Date: 2013-08-21 01:00:00
#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

date:表示记录访问日期;
time:访问时间;
s-sitename:客户端所访问的该站点的 Internet 服务和实例的号码。
s-ip:服务器ip
cs-method:表示访问方法,常见的有两种,一是GET,就是平常我们打开一个URL访问的动作,二是POST,提交表单时的动作;
cs-uri-stem: 就是访问哪一个文件;
cs-uri-query:是指访问地址的附带参数,如asp文件?后面的字符串id=12等等,如果没有参数则用-表示;
s-port:访问的端口
cs-username:对于通过身份验证的用户,格式是“域\用户名”;对于匿名用户,是一个连字符 (-)。
c-ip:访问服务器的客户端 IP 地址。(已过滤掉中间各种IP,是真实的客户端IP)
cs(User-Agent):在客户端使用的浏览器。
sc-status:状态,200表示成功,403表示没有权限,404表示打不到该页面,500表示程序有错;
sc-substatus:跟数据缓存有关
cs–win32-statu: 客户端传送到服务端的字节大小;
time-taken: 处理所用的时间 ,单位毫秒

注:IIS日志位置未进行验证,配置文件位置参考自阿里云IIS日志文档。