15053971836 注册 / 登录

apache网站日志

时间: 阅读:246
apache网站日志

最佳回答

夜半丶唱情歌

夜半丶唱情歌

2023-01-13 04:44:56

关于默认的Apache日志文件

Apache提供很多检测和日志工具来追踪服务器的正确运行。默认的Apache配置提供两个日志文件,放置在安装目录下的日志目录里面。access_log这个文件(在windows下对应access.log文件)包含了服务器已经处理过的请求的信息,比如说请求的URL,客户端的IP地址,请求是否被成功完成等。error_log 这个文件(在windows下对应error.log文件)包含了与错误情况相关的信息,以及服务器生命周期中不同的大事件。

创建日志格式

LogFormat "%h %l %u %t "%r" %>s %b" common

LogFormat "%h %l %u %t "%r" %>s %b"

"%{Referer}i" "%{User-agent}i"" combined

LogFormat指令允许你告诉Apache你想要记录请求的哪些方面。而你仍需附加的指令来告诉Apache在哪里记录那些信息,这在下一章中将会介绍。下面的例子显示了两种最受欢迎的格式的配置:普通日志格式和整合日志格式。当Apache收到一个请求,他将会用相应的请求属性来替代以%为前缀的每一个域。如果您正在使用普通日志格式,您的日志文件里的每一项输入看起来都将是这样的:

192.168.200.4 - someuser [12/Jun/2005:08:33:34

+0500] "GET /example HTTP/1.0" 200 1234

如果您正在使用整合日志格式,您的日志文件里的每一项输入看起来则都将是这样的:

192.168.200.4 - someuser [12/Jun/2005:08:33:34

+0500] "GET /example HTTP/1.0" 200 1234

/ "Mozilla/5.0

(Windows; U; Windows NT 5.1; en-US; rv:1.7.7)"尽管有附件提供日志格式的详尽索引,下表描述了一些最为重要的域:

# %h: 客户端(例如,浏览器)向服务器发出连接请求时自己的当时的IP地址或域名(需开启HostNameLookups)。

# %u: 使用HTTP方式认证用户时,记录下的用户的编号。

# %t: 服务器接受到连接请求的时间。

# %r: 客户端发出的原始连接请求中的文本信息,包含所使用的HTTP方法。

# %>s: 服务器应答浏览器后的返回状态代码,200表示请求成功。.

# %b: 服务器应答浏览器发出的单个请求的回传对象的内容大小(字节为单位),不统计数据包头部字节。

整合日志格式在普通日志格式的基础上扩展出了两个附加的`域。定义为:

# %{Referer}i: 连接请求数据包包头,包含指向当前页面的文档关联信息。

# %{User-agent}i: 用户代理连接请求数据包包头,包含客户浏览器的信息。

创建一个自定义日志文件

CustomLog logs/access_log common

TransferLog logs/sample.log您可能会想创建Apache自带以外的新的日志文件。下面的例子将运用CustomLog来创建一个新的日志文件,并保存由一个之前定义好的日志格式,即前一章提到的common,所定义的信息。您还可以用格式本身的定义来替换昵称。一个附加的,更为简单的指令是Transferlog,它只接受最后一个LogFormat指令提供的定义。

延伸阅读:

重导向日志到一个外部的程序

TransferLog "|bin/rotatelogs /var/logs/apachelog

86400"你也可以用CustomLog或TransferLog将日志的输出重导向(输出)到一个外部的程序,而不是一个文件。要做到这一点,首先您需要以输出字符"|"开头,跟着是接收日志标准输入信息的程序之路经。本例运用Apache自带的rotatelogs程序,在稍后的章节中会对其有所介绍。

当有一个外部程序被使用,它将作为启动mon env=!image

SetEnvIf Remote_Addr 192.168.200.5 specialmachine

CustomLog logs/special_access_log common env=specialmachine你可以根据可变的环境决定是否记录一个请求。这种可变可以根据许多参数,比如客户端的IP地址或请求中某个头部的存在,事先设置好。正如本例中所显示,CustomLog指令可以将可变的环境作为第三个参数来接受。如果存在可变的环境,它就将被记录,否则就不会。如果这个可变的环境被一个"!"开头否定,那么不存在可变的环境将会被记录。本例将告诉您如何避免在日志里以GIF和JPEG的格式记录图像,及如何从一个特定的IP地址记录请求道一个单独的日志文件。另一个例子请参加下一节。

谁在连接你的网站

SetEnvIfNoCase Refererinternalreferral

LogFormat "%{Referer}i -> %U" referer

CustomLog logs/referer.log referer env=!internalreferral可以通过记录Referer的值来检测哪些人连接了你的网站,Referer变量位于用户发送连接请求数据包的头部,数据包头中还包含了用户访问的目的网站的URL地址。通过这种方法可以记录下绝大部分网站访问者。也可以把来自特定网站地址段的来访者排除出日志记录文件。

利用模块参数(mod_status)来监视Apache服务器

SetHandler server-status

Order Deny,Allow

Deny from all

Allow from 192.168.0

Apache服务器中可以使用的功能模块很多,有服务器内置的也有外挂的,这些模块工作的状态和性能就是通过mod_status参数来记录的,记录的内容有“哪些模块参与了网站应答服务、哪些模块处于空闲状态、服务器的开启/关闭时间。正在处理的连接请求数和访问者数量(需要指定ExtendedStatus记号)-该模块记录对高负荷网站服务器性能有很大影响”。例子中记录的模块状态统计结果可以用浏览器访问/server-status页面来查看。

通过SNMP协议来监视Apache服务器

SNMP是简单网管协议,支持SNMP的服务器或网络设备可以被OpenView、Tivoli等网管软件统一管理,目前有很多开源的SNMP模块可以加装到Apache网站服务器之上,对于Apache 1.3版来讲,mod_snmp模块可以支持第1版和2版的SNMP协议;对于Apache 2版来讲,mod_apache_snmp模块可以编译成Apache的DSO直接支持第1版、第2版和第3版的SNMP协议。有了SNMP模块,外部网管软件就可以对Apache网站服务器的各种实时性能参数进行查看了,这些参数包含“服务器连续在线时间、平均负载、一段时间内的错误数、提供网站服务的字节数和连接请求数”。SNMP模块遇到突然激增的并发连接请求数时会向控制台报警。管理SNMP资源的开源工具软件有:“net-snmp,OpenNMS,Najios等”。

用开源工具分析日志

有很多开源和商业版的工具软件可以对产生的Apache日志文件做分析和处理,通常的步骤是:

1.选取一个日志文件。

2.分析日志文件内容。

3.生成包含不同类别内容的统计信息网页输出。Webalizer(/software/去下载这些工具。

将连接请求日志记录到数据库

Apache本身没有将记录转发到数据库的功能,必须要第三方脚本和模块来支持。这里列举几个:mod_log_sql模块允许将连接请求直接记入MySQL数据库,然后用Apache LogView SQL工具来参看库中的记录;pglogd工具可以记录日志到PostgreSQL数据库中。

将日志文件转存和归档

CustomLog "|bin/rotatelogs /var/logs/apachelog

86400" common如果网站流量较高,日志文件很容易就会变得很大,需要进行转存和归档处理。转存日志文件时需要压缩和保存,在线进行这项工作可以使用Apache提供的rotatelogs来完成,类似工具还可以在.au/logtools/网页可以找到一些其他的日志工具。比如vlogger工具就可以替代cronologs来对单个服务器上的虚拟网站日志进行分别处理,该工具在

CustomLog logs/vhost1.example.com_log combined

ErrorLog logs/vhost2.example.com_log

.......

使用CustomLog标志段在Apache配置文件的 区块内实现虚拟网站日志文件的独立处理。

LogFormat "%v %h %l %u %t "%r" %>s %b" common_virtualhost

CustomLog logs/access_log common_virtualhost在Apache全局配置中配置方法,其中的v%负责把提供服务的虚拟网站记录下来,对于配置了很多虚拟网站的单台服务器来说,这种配置不错。如果不想记录虚拟服务器的日志只需要在配置文件中加入"CustomLog /dev/null"就可以了。

日志文件中常见的条目

缺少favicon.ico文件,该文件可在浏览器的标题栏显示网站的个性图案;

缺少robots.txt文件,利于站点复制工具和搜索引擎使用;

覆写httpd.pid文件,网站服务器不正常退出后遗留的PID记录文件;

陌生的长记录条,

"SEARCH /x90x02xb1x02xb1x02xb1x02 ..."

"GET /scripts/..%252f../winnt/system32/cmd.exe?/

c+dir HTTP/1.0..."

"GET /default.ida?NNNNNNN NNNNNNNNNNNNNNNNNN ..."类似的记录条表示访问者请求了网站上根本没有的cmd.exe,root.exe或dir等文件。

日志文件中的一些条目经常反映了那些自动探测网站服务器漏洞的动作,多数来源于针对IIS网站服务器的蠕虫和恶意程序。有时候也会发现一些针对Apache的漏洞,所以为了保证Apache的正常运行,用户应保持经常更新Apache软件。

最新回答共有5条回答

  • 游客
    回复
    2023-01-13 07:07:08

    前言

    今天我们来彻底聊聊,什么是TCP/IP、http、socket、长连接、短连接

    TCP/IP

    TCP/IP是协议组,分为三个层次:

    网络层传输层应用层。

    在网络层有:

    IP协议ICMP协议ARP协议RARP协议BOOTP协议

    在传输层中有:

    TCP协议UDP协议

    在应用层有:

    TCP包括:

    FTP协议HTTP协议TELNET协议SMTP协议

    UDP包括:

    DNS协议TFTP协议短连接

    流程:连接->传输数据->关闭连接

    HTTP是无状态的,浏览器和服务器每进行一次HTTP操作,就建立一次连接,但任务结束就中断连接。

    也可以这样说:短连接是指SOCKET连接后发送后接收完数据后马上断开连接。

    长连接

    流程:连接 -> 传输数据 -> 保持连接 -> 传输数据 -> 。。。-> 关闭连接。

    长连接指建立SOCKET连接后不管是否使用都保持连接,但安全性较差。

    http的长连接

    HTTP也可以建立长连接的,使用Connection:keep-alive,HTTP 1.1默认进行长连接。

    HTTP1.1 和 HTTP1.0 相比较而言,最大的区别就是增加了长连接支持(貌似最新的 http1.0 可以显示的指定 keep-alive),但还是无状态的,或者说是不可以信任的。

    什么时候用长连接,短连接?

    长连接多用于操作频繁,点对点的通讯,而且连接数不能太多情况。

  • 匿名用户
    回复
    2023-01-13 07:07:08

    “我是哟哟吼说科技,专注于数据网络的回答,欢迎大家与我交流数据网络的问题”

    如题,一个完整的HTTP过程是怎样的?

    一个完整的HTTP过程包括建立连接、数据传输、断开连接等七个步骤。

    下面哟哟来详细介绍一下每一步:

    1、TCP建立连接

    HTTP协议是基于TCP协议来实现的,因此首先就是要通过TCP三次握手与服务器端建立连接,一般HTTP默认的端口号为80;

    2、浏览器发送请求命令

    在与服务器建立连接后,Web浏览器会想服务器发送请求命令

    3、浏览器发送请求头消息

    在浏览器发送请求命令后,还会发送一些其它信息,最后以一行空白内容告知服务器已经完成头信息的发送;

    4、服务器应答

    在收到浏览器发送的请求后,服务器会对其进行回应,应答的第一部分是协议的版本号和应答状态码;

    5、服务器回应头信息

    与浏览器端同理,服务器端也会将自身的信息发送一份至浏览器;

    6、服务器发送数据

    在完成所有应答后,会以Content-Type应答头信息所描述的格式发送用户所需求的数据信息;

    7、断开TCP连接

    在完成此次数据通信后,服务器会通过TCP四次挥手主动断开连接。但若此次连接为长连接,那么浏览器或服务器的头信息会加入keep-alive的信息,会保持此连接状态,在有其它数据发送时,可以节省建立连接的时间;

    欢迎大家多多关注我,在下方评论区说出自己的见解。

  • 匿名用户
    回复
    2023-01-13 07:07:08

    谢邀~

    我们打开浏览器,在地址栏输入www.wukong.com,几秒后浏览器打开的页面,那么这几秒钟内发生了哪些事情,我就带大家一起看看完整的流程:

    解析URL

    浏览器首先会对输入的URL进行验证,如果不合法的时候,那么会把输入的文字传给默认的搜索引擎,比如你只在地址栏输入“”几个字。

    如果URL通过验证,那么可以解析得到协议(http或者https)、域名(wukong)、资源(首页)等信息。

    DNS查询

    浏览器会先检查域名信息是否在缓存中。

    再检查域名是否在本地的Hosts文件中。

    如果还不在,那么浏览器会向DNS服务器发送一个查询请求,获得目标服务器的IP地址。

    TCP封包及传输

    这时候浏览器获得了目标服务器的IP(DNS返回)、端口(URL中包含,没有就使用默认),浏览器会调用库函数socket,生成一个TCP流套接字,也就是完成了TCP的封包。

    TCP封包完成之后,就可以传输了,在完成“你瞅啥”,“瞅你咋地”,“来,过来唠唠”一系列操作之后,浏览器和服务器就完成了TCP的三次握手,建立了连接,后面就可以请求服务器资源了。

    服务器接收请求并相应

    HTTP有很多请求方法,比如:GET/POST/PUT/DELETE等等,我们浏览器输入URL这种,是GET方法。

    服务器接收到GET请求,服务器根据请求信息,获得相应的相应内容。例如我们输入的是:www.wukong.com,那么意味着访问首页文件。

    浏览器解析并渲染

    浏览器从服务器拿到了想要访问的资源,大多数时候,这个资源就是HTML页面,当然也可能是一个其他类型的文件。

  • 游客
    回复
    2023-01-13 06:06:58

    apache的日志内容 无非 就是 请求时间 访问的客户端ip 请求访问的 内容, http状态码 客户浏览器等。
    通过这个日志可以分析出网站的访问量,被访问的url 访问量 频率。
    分析这个文件的软件有 awstat 这样的工具。