阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

Apache服务器访问日志access.log设置

174次阅读
没有评论

共计 3445 个字符,预计需要花费 9 分钟才能阅读完成。

一、访问日志信息

当浏览器请求服务器时,如果在服务器上设置了访问日志,就会记录下用户的访问记录。

例如我访问本地 apache 所产生的一条默认的日志:

127.0.0.1 – – [03/Feb/2015:23:14:24 +0800] “GET / HTTP/1.1” 200 2

分为 7 个部分

(1)第一项信息是远程主机的地址,即它表明访问网站的究竟是谁。(可以要求 apache 查出所有的主机名字,并在日志文件中用主机名字来替代IP地址,但这种做法会极大的影响服务器记录日志的速度,从而降低整个网站的效率,不值得推荐)。然而,如果确实有必要让Apac

e找出远程主机的名字,可以使用如下指令:

HostNameLookups on

如果 HostNameLookups 设置成 double 而不是 on,日志记录程序将对它找到的主机名字进行反向查找,验证该主机名字确实指向了原来出现的 IP 地址。

(2)上例日志记录的第二项是空白,用一个“-”占位符替代。实际上绝大多数时候这一项都是如此。这个位置用于记录浏览者的标识,这不只是浏览者的登录名字,而是浏览者的 email 地址或者其他唯一标识符。这个信息由 identd 返回,或者直接由浏览器返回。(为了避免用户的邮箱被垃圾邮件骚扰,第二项就用“-”取代了)。

(3)日记记录的第三项也是空白。这个位置用于记录浏览者进行身份验证时提供的名字。当然,如果网站的某些内容要求用户进行身份验证,那么这项信息室不会空白的。但是,对于大多数网站来说,日志文件的大多数记录中这一项仍旧是空白的。

(4)日志记录的第四项是请求的时间。这个信息用方括号包围,而且采用“公用日志格式”或者“标准英文格式”。因此,时间信息最后的“-0400”表示服务器所处时区位于 UTC 之前的 4 小时。

(5)日志记录的第五项信息或许是整个日志记录中最有用的信息,它告诉我们服务器受到的是一个什么样的请求。该项信息的典型格式是“METHOD RESOURCE PROTOCOL”即“方法 资源 协议”(我们通常进行日志监控的时候,主要也是看这项内容)。例子中 METHOD 是 GET,还有 POST、HEAD 等其他类型,主要是这三种。

RESOURCE 是指浏览者向服务器请求的文档或者URL。在这个例子中,浏览者请求的是“/”,即网站的根或者主页。大多数情况下,“/”指向 DocumentRoot 目录的 index.html 文档,但根据服务器配置的不同也可能指向其他文件。

PROTOCOL 通常是 HTTP,然后再加上版本号。

(6)日志的第六项信息室状态代码。它告诉我们请求是否成功,或者遇到了什么样的错误。大多数时候这项是 200,它表示服务器已经成功的响应浏览器的请求,一切正常。(以 2 开头的状态码表示成功,以 3 开头的状态码表示由于各种不同的原因用户请求被重定向到了其他位置,以 4 开头的状态代码表示客户端存在某种错误,以 5 开头的状态代码表示服务器遇到了某个错误)。

(7)日志记录的第七项表示发送客户端的总字节数。它告诉我们传输是否被打断(即该数值是否和文件的大小相同)

二、配置访问日志

在 apache 的配置文件 httpd.conf 中,有一行是这么配置的:

CustomLog “logs/access.log” common

指定了日志的目录路径./logs/,指定了日志的格式,默认 common。

common 格式是通过:LogFormat “%h %l %u %t \”%r\” %>s %b” common 定义的。

双引号里面的格式字符串代表特定的信息。

apache 格式字符串及其含义:

%%    百分号 (Apache2.0.44 或更高的版本)
%a    远端 IP 地址
%A    本机 IP 地址
%B    除 HTTP 头以外传送的字节数
%b    以 CLF 格式显示的除 HTTP 头以外传送的字节数,也就是当没有字节传送时显示 ’-‘ 而不是 0。
%{Foobar}C    在请求中传送给服务端的 cookieFoobar 的内容。
%D    服务器处理本请求所用时间,以微为单位。
%{FOOBAR}e    环境变量 FOOBAR 的值
%f    文件名
%h    远端主机
%H    请求使用的协议
%{Foobar}i    发送到服务器的请求头 Foobar: 的内容。
%l    远端登录名(由 identd 而来,如果支持的话),除非 IdentityCheck 设为 ”On”,否则将得到一个 ”-“。
%m    请求的方法
%{Foobar}n    来自另一个模块的注解 Foobar 的内容。
%{Foobar}o    应答头 Foobar: 的内容。
%p    服务器服务于该请求的标准端口。
%P    为本请求提供服务的子进程的 PID。
%{format}P 服务于该请求的 PID 或 TID(线程 ID),format 的取值范围为:pid 和 tid(2.0.46 及以后版本) 以及 hextid(需要 APR1.2.0 及以上版本)
%q    查询字符串 (若存在则由一个 ”?” 引导,否则返回空串)
%r    请求的第一行
%s    状态。对于内部重定向的请求,这个状态指的是原始请求的状态,—%>s 则指的是最后请求的状态。
%t    时间,用普通日志时间格式(标准英语格式)
%{format}t    时间,用 strftime(3) 指定的格式表示的时间。(默认情况下按本地化格式)
%T    处理完请求所花时间,以秒为单位。
%u    远程用户名 (根据验证信息而来;如果返回 status(%s) 为 401,可能是假的)
%U    请求的 URL 路径,不包含查询字符串。
%v    对该请求提供服务的标准 ServerName。
%V    根据 UseCanonicalName 指令设定的服务器名称。
</span><span style=”font-size:18px;”>

【补充】”<“ 和 ”>” 修饰符可以用来指定对于已被内部重定向的请求是选择原始的请求还是选择最终的请求。默认情况下,%s, %U, %T, %D, %r 使用原始请求,而所有其他格式串则选择最终请求。例如,<strong>%>s</strong> 可以用于记录请求的最终状态,而 %<u 则记录一个已经被内部重定向到非认证资源的请求的原始认证用户。
  如果在“%”和变量之间放入了一个或者多个 HTTP 状态代码,则只有当请求返回的状态代码属于指定的状态代码之一时,变量所代表的内容才会被记录。例如,如果我们想要记录的是网站的所有无效链接,那么可以使用:
    LogFormat %404{Referer}i BrokenLinks 
  反之,如果我们想要记录那些状态代码不等于指定值的请求,只需加入一个“!”符号即可:
  LogFormat %!200U SomethingWrong 

我们还可以自定义日志格式,例如:

LogFormat “%h %l %u %t \”%r\” %>s %b \”%{Referer}i\” \”%{User-Agent}i\” ” combine

定义了 combine 格式  其中 \”%{Referer}i\” \”%{User-Agent}i\” 是发送到服务器的求情头和 Referer 链接。

————————————- 我是分割线 ————————————-

Ubuntu 下 Apache 的 Rewrite 如何启用  http://www.linuxidc.com/Linux/2010-10/29027.htm

Ubuntu 14.04 中 Apache 2.2 升级到 2.4 后的几个要点 http://www.linuxidc.com/Linux/2015-01/111914.htm

Ubuntu 13.04 安装 LAMP\Vsftpd\Webmin\phpMyAdmin 服务及设置 http://www.linuxidc.com/Linux/2013-06/86250.htm

CentOS 5.9 下编译安装 LAMP(Apache 2.2.44+MySQL 5.6.10+PHP 5.4.12) http://www.linuxidc.com/Linux/2013-03/80333p3.htm

RedHat 5.4 下 Web 服务器架构之源码构建 LAMP 环境及应用 PHPWind http://www.linuxidc.com/Linux/2012-10/72484p2.htm

LAMP 源码环境搭建 WEB 服务器 Linux+Apache+MySQL+PHP http://www.linuxidc.com/Linux/2013-05/84882.htm

正文完
星哥说事-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-20发表,共计3445字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中