当前位置:文档之家› apache的日志解析总结版

apache的日志解析总结版

apache的日志解析总结版
apache的日志解析总结版

web 服务器日志配置和分析详解
从某种程度上将”日志就是金钱”,因为通过日志能够分析出一个网站具有高流量,则广告商 愿意为其支付费用。对于所有的公司或 ICP 来说,除了要保证网站稳定正常的运行以外,一 个重要的问题就是网站访问量的统计和分析报表, 这对于了解和监控网站的运行状态, 提高 各个网站的服务能力和服务水平是必不可少的。而这些要求都可以通过对 Web 服务器日志 文件的统计和分析来实现。
一、
web 日志分析原理
web 服务器日志记录了 Web 服务器接收处理请求及运行时错误等各种原始信息。 通过对日志进 行统计、分析和综合,就能有效地掌握服务器的运行状况、发现和排除错误原因、了解客户访问 分布等,更好地加强系统的维护和管理。Web 服务模式主要有三个步骤: 服务请求,包含用户端的众多基本信息,如 IP 地址、浏览器类型、目标 URL 等。 服务响应,Web 服务器接收到请求后,按照用户要求运行相应的功能,并将信息返回给用户。 如果出现错误,将返回错误代码。 追加日志,服务器将对用户访问过程中的相关信息以追加的方式保存到日志文件中。如图 1 。
图 1 Web 服务模式主要有三个步骤
二、
Apache 日志的配置
1、日志类型 1.3 版本 Apache 的标准中规定了 4 类日志:

? ? ? ?
错误日志 访问日志 传输日志 Cookie 日志
其中:传输日志和 Cookie 日志被 Apache 2.0 认为已经过时。所以本文仅讨论错误日志 和访问日志。同时错误日志和访问日志被 Apache 2.0 默认设置。 错误日志包含: 获知失效链接 获知 CGI 错误 获知用户认证错误 访问日志包含: 访问服务器的远程机器的地址:可以得知浏览者来自何方 浏览者访问的资源:可以得知网站中的哪些部分最受欢迎 浏览者的浏览时间:可以从浏览时间(如工作时间或休闲时间)对网站内容进行调整 浏览者使用的浏览器:可以根据大多数浏览者使用的浏览器对站点进行优化 访问日志分类: 为了便于分析 Apache 的访问日志,Apache 的默认配置文件中,按记录的信息不同(用 不同格式昵称说明不同的信息)将访问日志分为 4 类: 普通日志格式(common log format,CLF)common 参考日志格式(referer log format)referrer 代理日志格式(agent log format)agent 2、配置访问日志命令 CustomLog 命令用来对服务器的请求进行日志记录。格式为: 格式 1:CustomLog 访问日志文件名 记录格式说明串|格式昵称 大多数日志分析软件都支持这种格式
记录客户访问站点的用户身份 结合以上三种日志信息
记录请求的用户代理
综合日志格式(combined log format)combined

格式 2:CustomLog "|管道程序名 访问日志文件名" 记录格式说明串|格式昵称 说明: 访问日志文件名:除非文件位置用”/“开头,否则所制定的文件位置是相对于 ServerRoot 目录的相对路径 格式昵称:使用 LogFormat 命令将一个记录格式说明串赋以一个名称 记录格式说明串:用字符串和格式说明符(以%开头)指定日志记录的内容 管道程序名:管道符”|”后面紧跟着一个程序的路径,这个程序把日志从标准输入设备中读 入并处理。 LogFormat 命令用于定义访问日志的记录格式。格式为: LogFormat "记录格式说明串" 格式昵称 从 apache2.conf 中可知,在 Apache 中定义了下面的 4 种类型的访问日志: LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agen t}i\"" combined LogFormat "%h %l %u %t \"%r\" %>s %b" common LogFormat "%{Referer}i -> %U" referer LogFormat "%{User-agent}i" agent
由于综合日志格式简单地结合了 3 种日志信息,所以在配置访问日志时,要么使用一 个综合文件进行记录,要么使用分离的多个(1-3)文件记录。通常使用一个综合日志格式文 件进行记录,配置为:
CustomLog /var/log/apache2/access.log combined 若使用 3 个文件分别进行记录,配置为: CustomLog /var/log/apache2/access.log common CustomLog /var/log/apache2/referer.log referer CustomLog /var/log/apache2/agent.log agent 下面的命令组: LogFormat "%h %l %u %t \"%r\" %>s %b" common CustomLog logs/access_log common 与下面的命令等效:

CustomLog logs/access_log "%h %l %u %t \"%r\" %>s %b" 通常我们配置访问日志时,使用先使用 LogFormat 命令定义格式昵称,然后再在 CustomLog 命令中引用昵称的方法。 在使用 LogFormat 和 CustomLog 命令中为了说明要记录的日志内容, 可以使用的常用 格式说明符如表-3。 格式说明符 %v %h %l %u %t %r 说明 进行服务的服务器的标准名字 ServerName, 通常用于虚拟主机的日志 记录中。 客户机的 IP 地址。 从 identd 服务器中获取远程登录名称,基本已废弃。 来自于认证的远程用户。 连接的日期和时间。 HTTP 请求的首行信息,典型格式是“METHOD RESOURCE PROTOCOL”,即“方法 资源 协议”。经常可能出现的 METHOD 是 GET、POST 和 HEAD;RESOURCE 是指浏览者向服务器请求的文档 或 URL;PROTOCOL 通常是 HTTP,后面再加上版本号,通常是 HTTP/1.1。 %>s 响应请求的状态代码,一般这项的值是 200,表示服务器已经成功地响 应浏览器的请求,一切正常;以 3 开头的状态代码表示由于各种不同的 原因用户请求被重定向到了其他位置; 4 开头的状态代码表示客户端 以 存在某种错误;以 5 开头的状态代码表示服务器遇到了某个错误。 %b %{Referer}i %U \"%{User-Agent}i\" 服务器的日志文件目录。 传送的字节数(不包含 HTTP 头信息),将日志记录中的这些值加起来 就可以得知服务器在一天、一周或者一月内发送了多少数据。
指明了该请求是从被哪个网页提交过来的。
请求的 URL 路径,不包含查询串。
此项是客户浏览器提供的浏览器识别信息。
图 2 是从一个访问日志文件中截取的几条记录。这里使用 winscp 远程登录到 Solaris 10
图 2 apache 访问日志 将其中一列各项信息分离于表-4 所示。 格式说明符 %h 远程主机 192.168.220.1 举例 1

IP %l %u %t 时间和时 差 %r %>s %b %{Referer}i %{User-Agent}i 3、配置错误日志 错误日志记录了服务器运行期间遇到的各种错误, 以及一些普通的诊断信息, 比如服务器何 时启动、何时关闭等。 ErrorLog 命令指定了当服务器遇到错误时记录错误日志的文件名。其格式为: 格式 1:ErrorLog 错误日志文件名 格式 2:ErrorLog "|管道程序名" 格式 1 直接指定错误日志文件名,除非文件位置用”/“开头,否则 ErrorLog 所制定的文件 位置是相对于 ServerRoot 目录的相对路径。 格式 2 实现管道日志,它指定一个命令来处理错误日志。 Apache 编译时默认的错误日志可以使用如下命令获得: $ apache2 -V| grep DEFAULT_ERRORLOG -D DEFAULT_ERRORLOG="logs/error_log" LogLevel LogLevel 用于调整记于错误日志中的信息的详细程度。 等级 alert crit 应用说明 需要立即引起注意的情况 危险情况的警告 级别 1 2 3 emerg 出现紧急情况使得该系统不可用,如系统宕机等 请求 / 版 "GET / HTTP/1.1" 本 服务状态 码 发送的字 节数 ”-” 1185 404 -(表示没有取得信息) 访问日期, 14/Oct/2008:19:54:51 +0800

error warn info
除了 emerg、alert、crit 的其他错误 警告信息 值得报告的一般消息
4 5 6 7 8
notice 需要引起注意的情况,但不如 error、warn 重要 debug 由运行于 debug 模式的程序所产生的消息 服务器的日志文件目录。
图 3 是从一个访问错误文件中截取的几条记录。这里使用 winscp 远程登录到 Solaris 10
图 3 apache 错误日志 从文件内容可以看出,每一行记录了一个错误。格式为: 日期和时间 错误等级 错误消息
三、
定义日志格式參數詳解
定制日志文件的格式涉及到两个指令,即 LogFormat 指令和 CustomLog 指令。在 httpd.conf 文件中。 LogFormat 指令定义格式并为格式指定一个名字,以后我们就可以直接引用这个名字。 CustomLog 指令设置日志文件,并指明日志文件所用的格式。 LogFormat 指令的功能是定义日志格式并为它指定一个名字。 例如, 在默认的 httpd.conf 文件中,我们可以找到下面这行代码: LogFormat "%h %l %u %t \"%r\" %>s %b" common 该指令创建了一种名为“common”的日志格式,日志的格式在双引号包围的内容中指定。 格式字符串中的每一个变量代表着一项特定的信息, 这些信息按照格式串规定的次序写入到 日志文件。

Apache 文档已经给出了所有可用于格式串的变量及其含义: ---------------------------------------------------------------------%...a: 远程 IP 地址 %...A: 本地 IP 地址 %...B: 已发送的字节数,不包含 HTTP 头 %...b: CLF 格式的已发送字节数量,不包含 HTTP 头。 例如当没有发送数据时,写入?-?而不是 0。 %...{FOOBAR}e: 环境变量 FOOBAR 的内容 %...f: 文件名字 %...h: 远程主机 %...H 请求的协议 %...{Foobar}i: Foobar 的内容,发送给服务器的请求的标头行。 %...l: 远程登录名字(来自 identd,如提供的话) %...m 请求的方法 %...{Foobar}n: 来自另外一个模块的注解“Foobar”的内容 %...{Foobar}o: Foobar 的内容,应答的标头行 %...p: 服务器响应请求时使用的端口 %...P: 响应请求的子进程 ID。 %...q 查询字符串(如果存在查询字符串,则包含“?”后面的 部分;否则,它是一个空字符串。) %...r: 请求的第一行 %...s: 状态。对于进行内部重定向的请求,这是指*原来*请求 的状态。如果用%...>s,则是指后来的请求。 %...t: 以公共日志时间格式表示的时间(或称为标准英文格式) %...{format}t: 以指定格式 format 表示的时间

%...T: 为响应请求而耗费的时间,以秒计 %...u: 远程用户(来自 auth;如果返回状态(%s)是 401 则可能是伪造的) %...U: 用户所请求的 URL 路径 %...v: 响应请求的服务器的 ServerName %...V: 依照 UseCanonicalName 设置得到的服务器名字 -----------------------------------------------------------------在所有上面列出的变量中,“...”表示一个可选的条件。如果没有指定条件,则变量的值将以 “-”取代。 有时候我们只想在日志中记录某些特定的、已定义的信息,这时就要用到“...”。如果在“%” 和变量之间放入了一个或者多个 HTTP 状态代码,则只有当请 求返回的状态代码属于指定 的状态代码之一时,变量所代表的内容才会被记录。例如,如果我们想要记录的是网站的所 有无效链接,那么可以使用: ---------------------------------------------------LogFormat %404{Referer}i BrokenLinks --------------------------------------------------反之,如果我们想要记录那些状态代码不等于指定值的请求,只需加入一个“!”符号即可: LogFormat %!200U SomethingWrong
四、
Apache 日志的滚动
1、为什么使用日志滚动 由于 Apache 进程本身不负责对日志文件进行滚动, 因此必须使用其他程序配置日志滚动。 所有的日志文件都会随着时间的推移和访问次数的增加而迅速增长, 因此必须对日志文件进行定 期清理以免造成磁盘空间的不必要的浪费。 同时也加快了管理员查看日志所用的时间, 因为打开 小文件的速度比打开大文件的速度要快。 2、使用命令使用空的日志文件 要使系统重新使用空的日志文件,可以执行如下的命令:

cd /opt/coolstack/apache2/log mv access_log access_log.old mv error_log error_log.old /opt/coolstack/apache2/bin/apachectl graceful sleep 800 gzip access_log.old error_log.old 上面的指令片断是进行日志滚动的基础, 用户可以自行编制脚本让 cron 执行。 下面介绍两 种常用的日志滚动配置方法。 3、使用 rotatelogs 实现日志滚动 Apache 自带的 rotatelogs 程序可以实现日志滚动。 rotatelogs 是一个配合 Apache 管 道日志功能使用的简单程序。为了使用 rotatelogs 程序,需要在 Apache 配置文件中使用管 道日志的配置。 rotatelogs 命令的格式如图 4:
rotatelogs 命令的格式 其中: -l:使用本地时间代替 GMT 时间作为时间基准。 logfile:日志文件名。有两种格式表示新的日志开始使用的时间。 如果 logfile 中包含”%”,则它会被视为用于 strftime()的格式字符串;常用的有: %Y:4 位数的年份 %m:2 位数的月份

%d:2 位数的一个月中的日期数 %H:2 位数的小时数(24 小时制) %M:2 位数的分钟数 %S:2 位数的秒数 %U:2 位数的一年中的星期数(星期天为一周的第一天) %W:2 位数的一年中的星期数(星期一为一周的第一天) %w:1 位数的星期几(星期天为一周的第一天) 否则它会被自动加上以秒为单位的”.nnnnnnnnnn”后缀, 这里 nnnnnnnnnn 是开始记录 日志的格林威治时间距离 1970 年 1 月 1 日 的秒数。 rotationtime:日志文件滚动的以秒为单位的间隔时间。 offset:相对于 UTC 的时差的分钟数。如果省略,则假定为”0″并使用 UTC 时间。比如, 要指定 UTC 时差为”-5 小时”的地区的当地时间,则此参数应为”-300″。 filesizeM:指定以 filesizeM 文件大小滚动,而不是按照时间来滚动日志。 使用举例: 例 1:每过一天滚动日志 ,修改 apache 配置文件如下: TransferLog "| /opt/coolstack/apache2/bin/rotatelogs / opt/coolstack/apache2/log /access.log 86400" combined 其中 86400(秒)是日志滚动的时间。86400 秒就是 1 天。滚动以后的文件名为/ opt/coolstack/apache2/log /access.log /access_log.nnnnnnnnnn, 这里 nnnnnnnnnn 是开始记录日志的格林威治时间距离 1970 年 1 月 1 日 的秒数。当日志滚动一次后将生成一 个新的日志文件,后缀为前一个日志文件的后缀值加 86400。 例 2:在日志文件大小增长到指定字节时滚动日志 ,修改 apache 配置文件如下: TransferLog "|/opt/coolstack/apache2/bin/rotatelogs / opt/coolstack/apache2/log/ apache2/access.log 20M" combined 此配置会在日志文件大小增长到 20M 字节时滚动该日志。 例 3:使用 logrotate 实现日志滚动 logrotate 是 Unix、 Linux 系统实现日志滚动的通用程序。 Linux 下可以直接使用, Solaris 10 下要进行安装配置。

#wegt ftp://https://www.doczj.com/doc/452758962.html,/pub/freeware/intel/10/logrotate-3.7.1-sol 10-x86-local.gz #gunzip ftp://https://www.doczj.com/doc/452758962.html,/pub/freeware/intel/10/logrotate-3.7.1-sol10-x 86-local.gz #pkgadd –d logrotate-3.7.1-sol10-x86-local 图 5 是 logrotate 安装配置完成界面
logrotate 安装配置完成界面 可以把配置文件/usr/local/doc/logrotate/examples/ logrotate-default 复制为配置文 件/etc/logrotate.conf 可以把配置文件/usr/local/doc/logrotate/examples/ logrotate.cron 复制到文件目录 /etc/cron.d/ 下面看看配置文件如图 6。

配置文件 logrotate 的配置文件中可以看到,除了 wtmp 以外,需要滚动的日志的配置都保存在 /etc/logroate.d 目录下。因此只需要在该目录下创建一个名为 apache 的配置文件,来指示 logrotate 如何轮循 Web 服务器的日志文件即可。下面是一个示例: / opt/coolstack/apache2/log { rotate 2 daily missingok sharedscripts postrotate /usr/bin/killall -HUP httpd 2> /dev/null || true endscript } 这里“rotate 2”表示轮循时只包括两个备份文件,也就是只有 access_log、access_log.1 和 access_log.2 三个日志备份文件。 这种方法的优点是不需要其它第三方工具就可以实现日志 轮循。 但是对于重负载的服务器和使用负载均衡技术的 Web 服务器来说, 这种方法不是很实用。 因为它是对相应服务进程发出一个-HUP 重启命令来实现日志的截断归档的, 这样会影响服务的 连续性。 例 4:使用使用 cronolog 实现日志滚动

cronolog (https://www.doczj.com/doc/452758962.html,/ )是基于 rotatelogs 的一个第三方工具软件。 cronolog 可以非常整齐的将日志按天轮循存储,即每个日志文件存储的是 00:00:00 到 23:59:59 时间之内的所有日志。 1.准备 gcc for solaris10 编译器,这里用的版本:gcc-3.3.2-sol10-intel-local.gz 2.下载解压缩文件 #wegt ftp://https://www.doczj.com/doc/452758962.html,/pub/freeware/intel/10/gcc-3.3.2-sol10-intel -local.gz #gizip –d gcc-3.3.2-sol10-intel-local.gz 3.安装 #pkgadd -d gcc-3.3.2-sol10-intel-local 接下来的安装,是一个交互安装过程 默认安装路径/usr/local/bin 4.设置 PATH 变量 # PATH=$PATH:/usr/local/bin #PATH=$PATH:/usr/ccs/bin # export PATH 5. 准备 coronolog,版本:cronolog-1.6.2.tar.gz 6.下载安装: #wegt https://www.doczj.com/doc/452758962.html,/download/cronolog-1.6.2.tar.gz # tar zxvf cronolog-1.6.2.tar.gz # cd cronolog-1.6.2 # ./configure # make # make install
cronolog 安装配置完成界面

可以看到默认是安装在/usr/local/sbin/下 。下面是一个使用 cronolog 的例子: CustomLog "|/usr/local/sbin/cronolog / opt/coolstack/apache2/log /access.log.%Y -%m-%d" combined 他将按日志依次生成日志文件,如: access.log.2008-09-18 access.log.2008-09-19 access.log.2008-09-20 access.log.2008-09-21 access.log.2008-09-22 若要压缩旧的日志文件或清除无用的日志文件,可以使用 find 等命令 配合系统 crond 来实现。
五、
Apache 状态码詳解:
基本上可以分为五类: 1xx 为消息类,该类状态代码用于表示服务器临时回应。 100 Continue 表示初始的请求已经被服务器接受,浏览器应当继续发送请求的其余部分 101 Switching Protocols 服务器将遵从客户的请求转换到另外一种协议。 2xx 表示浏览器端请求被处理成功。 200 OK 一切正常。 201 Created 服务器已经创建了文档,Location 头给出了它的 URL。 202 Accepted 已经接受请求,但处理尚未完成。 203 Non-Authoritative Information 文档已经正常地返回,但一些应答头可能不正确, 因为使用的是文档的拷贝。 204 No Content 没有新文档,浏览器应该继续显示原来的文档。这个跟下面的 304 非 常相似。 205 Reset Content 没有新的内容,但浏览器应该重置它所显示的内容。用来强制浏览器 清除表单输入内容。 206 Partial Content 客户发送了一个带有 Range 头的 GET 请求,服务器完成了它。注 意,通过 Range 可以实现断点续传。

3xx 重定向。 300 Multiple Choices 客户请求的文档可以在多个位置找到,这些位置已经在返回的文档 内列出。如果服务器要提出优先选择,则应该在 Location 应答头指明。 301 Moved Permanently 客户请求的文档在其他地方, 新的 URL 在 Location 头中给出, 浏览器应该自动地访问新的 URL。 302 Found 类似于 301, 但新的 URL 应该被视为临时性的替代, 而不是永久性的。 注意, 在 HTTP1.0 中对应的状态信息是“Moved Temporatily”。 出现该状态代码时,浏览器能够自动访问新的 URL,因此它是一个很有用的状态代码。 注意这个状态代码有时候可以和 301 替换使用。例如,如果浏览器错误地请求 http://host/~user ,有的服务器返回 301,有的则返回 302。 严格地说, 我们只能假定只有当原来的请求是 GET 时浏览器才会自动重定向。 请参见 307。 303 See Other 类似于 301/302,不同之处在于,如果原来的请求是 POST,Location 头指定的重定向目标文档应该通过 GET 提取。 304 Not Modified 客户端有缓冲的文档并发出了一个条件性的请求(一般是提供 If-Modified-Since 头表示客户只想比指定日期更新的文档)。服务器告诉客户,原来缓冲 的文档还可以继续使用。 305 Use Proxy 客户请求的文档应该通过 Location 头所指明的代理服务器提取。 307 Temporary Redirect 和 302(Found)相同。许多浏览器会错误地响应 302 应答进 行重定向, 即使原来的请求是 POST, 即使它实际上只能在 POST 请求的应答是 303 时 才 能重定向。由于这个原因,HTTP 1.1 新增了 307,以便更加清除地区分几个状态代码:当 出现 303 应答时,浏览器可以跟随重定向的 GET 和 POST 请求;如果是 307 应答,则浏 览器只 能跟随对 GET 请求的重定向。4xx 错误 4xx 客户端错误 400 Bad Request 请求出现语法错误。 401 Unauthorized 客户试图未经授权访问受密码保护的页面。应答中会包含一个 WWW-Authenticate 头,浏览器据此显示用户名字/密码对话框,然后在填写合适的 Authorization 头后再次发出请求。 403 Forbidden 资源不可用。服务器理解客户的请求,但拒绝处理它。通常由于服务器上 文件或目录的权限设置导致。 404 Not Found 无法找到指定位置的资源。这也是一个常用的应答。 405 Method Not Allowed 请求方法(GET、POST、HEAD、Delete、PUT、TRACE 等) 对指定的资源不适用。

406 Not Acceptable 指定的资源已经找到,但它的 MIME 类型和客户在 Accpet 头中所 指定的不兼容。 407 Proxy Authentication Required 类似于 401,表示客户必须先经过代理服务器的 授权。 408 Request Timeout 在服务器许可的等待时间内,客户一直没有发出任何请求。客户 可以在以后重复同一请求。 409 Conflict 通常和 PUT 请求有关。由于请求和资源的当前状态相冲突,因此请求不能成 功。 410 Gone 所请求的文档已经不再可用,而且服务器不知道应该重定向到哪一个地址。它 和 404 的不同在于,返回 407 表示文档永久地离开了指定的位置,而 404 表示由于未知 的原因文档不可用。 411 Length Required 服务器不能处理请求,除非客户发送一个 Content-Length 头。 412 Precondition Failed 请求头中指定的一些前提条件失败。 413 Request Entity Too Large 目标文档的大小超过服务器当前愿意处理的大小。如果 服务器认为自己能够稍后再处理该请求,则应该提供一个 Retry-After 头。 414 Request URI Too Long URI 太长。 416 Requested Range Not Satisfiable 服务器不能满足客户在请求中指定的 Range 头。 5xx 服务器错误 500 Internal Server Error 服务器遇到了意料不到的情况,不能完成客户的请求。 (服 务端的程序错误) 501 Not Implemented 服务器不支持实现请求所需要的功能。例如,客户发出了一个服 务器不支持的 PUT 请求。 502 Bad Gateway 服务器作为网关或者代理时,为了完成请求访问下一个服务器,但该 服务器返回了非法的应答。 503 Service Unavailable 服务器由于维护或者负载过重未能应答。例如,Servlet 可能 在数据库连接池已满的情况下返回 503。 服务器返回 503 时可以提供一个 Retry-After 头。 504 Gateway Timeout 由作为代理或网关的服务器使用,表示不能及时地从远程服务器 获得应答。 505 HTTP Version Not Supported 服务器不支持请求中所指明的 HTTP 版本。
HTTP 错误代码详细介绍

"100" "101" "200" "201" "202" "203" "204" "205" "206" "300" "301" "302" "303" "304"
: : : : : : : : : : : : : :
Continue witching Protocols OK Created Accepted Non-Authoritative Information No Content Reset Content Partial Content Multiple Choices Moved Permanently Found See Other Not Modified
"305" : Use Proxy "307" : Temporary Redirect HTTP 400 - 请求无效 HTTP 401.1 - 未授权:登录失败 HTTP 401.2 - 未授权:服务器配置问题导致登录失败 HTTP 401.3 - ACL 禁止访问资源 HTTP 401.4 - 未授权:授权被筛选器拒绝 HTTP 401.5 - 未授权:ISAPI 或 CGI 授权失败 HTTP 403 - 禁止访问 HTTP 403 - 对 Internet 服务管理器 (HTML) 的访问仅限于 Localhost HTTP 403.1 禁止访问:禁止可执行访问 HTTP 403.2 - 禁止访问:禁止读访问 HTTP 403.3 - 禁止访问:禁止写访问 HTTP 403.4 - 禁止访问:要求 SSL HTTP 403.5 - 禁止访问:要求 SSL 128 HTTP 403.6 - 禁止访问:IP 地址被拒绝 HTTP 403.7 - 禁止访问:要求客户证书 HTTP 403.8 - 禁止访问:禁止站点访问 HTTP 403.9 - 禁止访问:连接的用户过多 HTTP 403.10 - 禁止访问:配置无效 HTTP 403.11 - 禁止访问:密码更改 HTTP 403.12 - 禁止访问:映射器拒绝访问 HTTP 403.13 - 禁止访问:客户证书已被吊销 HTTP 403.15 - 禁止访问:客户访问许可过多 HTTP 403.16 - 禁止访问:客户证书不可信或者无效 HTTP 403.17 - 禁止访问:客户证书已经到期或者尚未生效 HTTP 404.1 - 无法找到 Web 站点 HTTP 404 - 无法找到文件 HTTP 405 - 资源被禁止 HTTP 406 - 无法接受

HTTP 407 - 要求代理身份验证 HTTP 410 - 永远不可用 HTTP 412 - 先决条件失败 HTTP 414 - 请求 - URI 太长 HTTP 500 - 内部服务器错误 HTTP 500.100 - 内部服务器错误 - ASP 错误 HTTP 500-11 服务器关闭 HTTP 500-12 应用程序重新启动 HTTP 500-13 - 服务器太忙 HTTP 500-14 - 应用程序无效 HTTP 500-15 - 不允许请求 global.asa Error 501 - 未实现 HTTP 502 - 网关错误

监视并记录Apache网站服务器的运行

监视并记录Apache网站服务器的运行 LogFormat 指令承诺你告诉Apache你想要记录要求的哪些方面。而你仍需附加的指令来告诉Apache在哪里记录那些信息,这在下一章中将会介绍。下面的例子显示了两种最受欢迎的格式的配置:一般日志格式和整合日志格式。当Apache收到一个要求,他将会用相应的要求属性来替代以%为前缀的每一个域。假如您正在使用一般日志格式,您的日志文件里 尽管有附件提供日志格式的详尽索引,下表描述了一些最为重要的域: # %h: 客户端(例如,扫瞄器)向服务器发出连接要求时自己的当时的IP地址或域名(需开启HostNameLookups)。 # %u: 使用方式认证用户时,记录下的用户的编号。 # %t: 服务器同意到连接要求的时刻。 # %r: 客户端发出的原始连接要求中的文本信息,包含所使用的方法。 # %>s: 服务器应答扫瞄器后的返回状态代码,200表示要求成功。. # %b: 服务器应答扫瞄器发出的单个要求的回传对象的内容大小(字节为单位),不统计数据包头部字节。 整合日志格式在一般日志格式的基础上扩展出了两个附加的域。定义为: # %{Referer}i: 连接要求数据包包头,包含指向当前页面的文档关联信息。 # %{User-agent}i: 用户代理连接要求数据包包头,包含客户扫瞄器的信息。 创建一个自定义日志文件 您可能会想创建Apache自带以外的新的日志文件。下面的例子将运用CustomLog来创建一个新的日志文件,并储存由一个之前定义好的日志格式,即前一章提到的common,所定义的信息。您还能够用格式本身的定义来替换昵称。一个附加的,更为简单的指令是Transferlog,它只同意最后一个LogFormat指令提供的定义。

apache的日志解析总结版

web 服务器日志配置和分析详解
从某种程度上将”日志就是金钱”,因为通过日志能够分析出一个网站具有高流量,则广告商 愿意为其支付费用。对于所有的公司或 ICP 来说,除了要保证网站稳定正常的运行以外,一 个重要的问题就是网站访问量的统计和分析报表, 这对于了解和监控网站的运行状态, 提高 各个网站的服务能力和服务水平是必不可少的。而这些要求都可以通过对 Web 服务器日志 文件的统计和分析来实现。
一、
web 日志分析原理
web 服务器日志记录了 Web 服务器接收处理请求及运行时错误等各种原始信息。 通过对日志进 行统计、分析和综合,就能有效地掌握服务器的运行状况、发现和排除错误原因、了解客户访问 分布等,更好地加强系统的维护和管理。Web 服务模式主要有三个步骤: 服务请求,包含用户端的众多基本信息,如 IP 地址、浏览器类型、目标 URL 等。 服务响应,Web 服务器接收到请求后,按照用户要求运行相应的功能,并将信息返回给用户。 如果出现错误,将返回错误代码。 追加日志,服务器将对用户访问过程中的相关信息以追加的方式保存到日志文件中。如图 1 。
图 1 Web 服务模式主要有三个步骤
二、
Apache 日志的配置
1、日志类型 1.3 版本 Apache 的标准中规定了 4 类日志:

? ? ? ?
错误日志 访问日志 传输日志 Cookie 日志
其中:传输日志和 Cookie 日志被 Apache 2.0 认为已经过时。所以本文仅讨论错误日志 和访问日志。同时错误日志和访问日志被 Apache 2.0 默认设置。 错误日志包含: 获知失效链接 获知 CGI 错误 获知用户认证错误 访问日志包含: 访问服务器的远程机器的地址:可以得知浏览者来自何方 浏览者访问的资源:可以得知网站中的哪些部分最受欢迎 浏览者的浏览时间:可以从浏览时间(如工作时间或休闲时间)对网站内容进行调整 浏览者使用的浏览器:可以根据大多数浏览者使用的浏览器对站点进行优化 访问日志分类: 为了便于分析 Apache 的访问日志,Apache 的默认配置文件中,按记录的信息不同(用 不同格式昵称说明不同的信息)将访问日志分为 4 类: 普通日志格式(common log format,CLF)common 参考日志格式(referer log format)referrer 代理日志格式(agent log format)agent 2、配置访问日志命令 CustomLog 命令用来对服务器的请求进行日志记录。格式为: 格式 1:CustomLog 访问日志文件名 记录格式说明串|格式昵称 大多数日志分析软件都支持这种格式
记录客户访问站点的用户身份 结合以上三种日志信息
记录请求的用户代理
综合日志格式(combined log format)combined

Apache日志配置及查看方法

Apache日志配置及查看方法 一、apache日志按日期记录 在apache的配置文件中找到 ErrorLog logs/error_log CustomLog logs/access_log common Linux系统配置方法: 将其改为 ErrorLog “| /usr/local/apache/bin/rotatelogs /home/logs/www/%Y_%m_%d_error_log 86400 480″ CustomLog “| /usr/local/apache/bin/rotatelo gs /home/logs/www/%Y_%m_%d_access_log 86400 480″ common Windows系统下配置方法: #ErrorLog “|bin/rotatelogs.exe logs/vicp_net_error-%y%m%d.log 86400 480″#CustomLog “|bin/rotatelogs.exe logs/vicp_net_access-%y%m%d.log 86400 480″ common 第一次不知道设置480这个参数,导致日志记录时间和服务器时间相差8小时,原来是rotatelogs有一个offset参数,表示相对于UTC的时差分钟数,中国是第八时区,相差480分钟。86400是表示1天。 附rotatelogs说明

rotatelogs logfile [ rotationtime [ offset ]] | [ filesizeM ] 选项 logfile 它加上基准名就是日志文件名。如果logfile中包含?%?,则它会被视为用于的strftime(3)的格式字串;否则,它会被自动加上以秒为单位的.nnnnnnnnnn后缀。这两种格式都表示新的日志开始使用的时间。 rotationtime 日志文件回卷的以秒为单位的间隔时间 offset 相对于UTC的时差的分钟数。如果省略,则假定为0,并使用UTC时间。比如,要指定UTC时差为-5小时的地区的当地时间,则此参数应为-300。 filesizeM 指定回卷时以兆字节为单位的后缀字母M的文件大小,而不是指定回卷时间或时差。 二、设置apache日志记录格式 定制日志文件的格式涉及到两个指令,即LogFormat指令和CustomLog指令,默认httpd.conf文件提供了关于这两个指令的几个示例。

【精编范文】shell脚本分析log日志-范文模板 (12页)

本文部分内容来自网络整理,本司不为其真实性负责,如有异议或侵权请及时联系,本司将立即删除! == 本文为word格式,下载后可方便编辑和修改! == shell脚本分析log日志 篇一:nginx日志分析解决方案 nginx日志分析解决方案- Awstats 很多PHP搭建的网站都在由apache转向了nginx。nginx的日志信息如何分析呢?当然你可以自己写一个,但是这里也推荐一款结果信息非常详尽的开源工具——Awstats,它基于perl编写,它的介绍如下: AWStats is a free powerful and featureful tool that generates advanced web, streaming, ftp or mail server statistics, graphically. This log analyzer works as a CGI or from command line and shows you all possible information your log contains, in few graphical web pages. It uses a partial information file to be able to process large log files, often and quickly. It can analyze log files from all major server tools like Apache log files (NCSA combined/XLF/ELF log format or common/CLF log format), WebStar, IIS (W3C log format) and a lot of other web, proxy, wap, streaming servers, mail servers and some ftp servers. 点击这里去官方网站 第一步,日志的处理。 最好每天分割一下日志,一开始没注意这个工作,结果不久日志文件就上G了,很痛苦。分割日志很简单,首先把日志文件复制到别的地方,然后再通知 nginx重新生成日志就可以了。shell脚本如下: #!/bin/bash logs_path="/nginx/logs/" mv ${logs_path}access.log ${logs_path}access_$(date -d "yesterday" +"%Y%m%d").log

web服务器apache架构与原理

web服务器apache架构与原理 web服务器 在开始了解Apache前,我们先熟悉一下web服务器,因为apache也是web服务器的一种。 Web系统由客户端(浏览器)和服务器端两部分组成。Web系统架构也被称为B/S架构。最常见的Web服务器有Apache、IIS等,常用的浏览器有IE、Firefox、chrome等。当你想访问一个网页时,需要在浏览器的地址栏中输入该网页的URL(Uniform Resource Locator,简称为URL)地址,或者是通过超链接链接到该网页。浏览器会向该网页所在的服务器发送一个HTTP请求,服务器会对接收到的请求信息进行处理,然后将处理的结果返回给浏览器,最终将浏览器处理后的结果呈现给用户。 web服务器端的工作流程: (1)客户端发送请求 客户端(通过浏览器)和Web服务器建立TCP连接,连接建立以后,向Web服务器发出访问请求(如get)。根据HTTP协议,该请求中包含了客户端的IP地址、浏览器的类型和请求的URL等一系列信息。 (2)服务器解析请求 Web服务器对请求按照HTTP协议进行解码来确定进一步的动作,设计的内容有三鼐要点:方法(GET)、文档(/sample.html)、和浏览器使用的协议(HTTP/1.1)其中方法告诉服务器应完动的动作,GET方法的含义很明显是:服务器应定位、读取文件并将它返回给客户。 Web服务器软件现在就知道了,它应该找到文件/sample.html,并使用HTTP/1.1协议将内存返回给客户。信息是经过与请求到来相同的连接发出的,所以服务器不需要定们客户或创建新的连接。 (3)读取其它信息(非必须步骤)

Apache Directory Server使用指南

本教程是在笔者学习JNDI过程中,由于没有合适的免费服务器做为实验,给Sun的JNDI 教程的LDAP服务器使用的又是Sun的服务器,OpenLDAP又没有找到Windows的版本,所以就决定使用Apache的开源LDAP服务器---Apache Directory Server。下面是Apache 网站对Apache Directory Project的介绍: The Apache Directory Project provides directory solutions entirely written in Java. These include a directory server, which has been certified as LDAP v3 compliant by the Open Group (Apache Directory Server), and Eclipse-based directory tools (Apache Directory Studio). Apache Directory项目提供了用纯Java编写的目录解决方案,其中包含ApacheDS,即Apache Directory Server,它是一个被授权的LDAP v3的服务器。同时还包含基于Eclipse 的目录工具,即Apache Directory Studio。 ApacheDS基本用户参考指南,主要介绍了如何安装ApacheDS 1.0,通过不同的图形化客户端连接服务器,当然主要还是需要通过JNDI编程来实现服务器的连接,这部分内容在JNDI教程中进行介绍。同时介绍了如何操作目录服务中的数据以及将ApacheDS和其它软件进行集成。 Apache Directory Server简介 ApacheDS 1.0是一个由纯Java语言编写的开源LDAP服务器。ApacheDS具有可嵌入、可扩展、标准的遵守LDAP协议等特性,同时支持其他的网络协议,例如NTP和Kerberos。但是ApacheDS是一个LDAP服务器是最基本的。各个特性介绍如下: Embeddable means that it is possible to configure, start and stop ApacheDS from other Java components, especially application servers, and the server runs within the same VM. The solution has already been successfully embedded in Apache Geronimo, JBoss, and others. The fact that the server is embeddable is quite interesting, nevertheless you also have the deployment option to run the server standalone, for instance as a Windows service. Perhaps you know this situation from other LDAP servers open source (like OpenLDAP) as well as commercial ones (like Sun Java System Directory Server). This guide is dedicated to people that are new to ApacheDS. The guide concentrates on installing, configuring and running ApacheDS in a standalone configuration. Extendable means that the modern architecture of the solution provides many extension points. Write your own partitions to store directory data, interceptors to add functionality,(通过编写自定义分区来存储目录数据,编写自定义拦截器来增加功能。这些都

apache日志LogFormat参数说明

apache日志LogFormat参数说明 因为想要看到apache的日志记录用户请求某个页面所花的时间,需要添加额外参数才会记录,所以临时查了下哦..记下来了 在httpd.conf里可以看到一行这样的配置 LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" common 的日志记录格式 请求本身的情况将通过在格式字符串中放置各种"%"转义符的方法来记录,它们在写入日志文件时,根据下表的定义进行转换: %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指令设定的服务器名称。 %X 请求完成时的连接状态:X= 连接在应答完成前中断。 += 应答传送完后继续保持连接。 -= 应答传送完后关闭连接。

linux httpd apache配置文件详解

Apache的配置文件http.coif参数含义详解 1.基本配置: (2) 2.服务器的优化(MPM: Multi-Processing Modules) (3) 3.HTTP返头回信息配置: (5) 4.持久性连接设置 (5) 5.别名设置 (5) 6.CGI设置 (6) 7.个人主页的设置(public_html) (6) 8.日志的设置 (6) (1)错误日志的设置 (6) (2)访问日志设置 (6) 9.下面是一段访问日志的实例: (7) 10.虚拟主机的配置 (8) (1)基于IP地址的虚拟主机配置 (8) (2) 基于IP和多端口的虚拟主机配置 (8) (3)单个IP地址的服务器上基于域名的虚拟主机配置: (9) (4)在多个IP地址的服务器上配置基于域名的虚拟主机: (10) (5)在不同的端口上运行不同的站点 (10) (6)基于域名和基于IP的混合虚拟主机的配置: (11) 11.SSL加密的配置 (12) (1) conf/ssl.conf 配置文件中的主要参数配置如下: (12) (2) 创建和使用自签署的证书: (13) (3) 创建自己的CA(认证证书),并使用该CA来签署服务器的证书。 (13)

Apache的配置由httpd.coif文件配置,因此下面的配置指令都是在httpd.coif文件中修改。 主站点的配置(基本配置) 1.基本配置: ServerRoot "/mnt/software/apache2" #你的apache软件安装的位置。其它指定的目录如果没有指定绝对路径,则目录是相对于该目录。 PidFile logs/httpd.pid #第一个httpd进程(所有其他进程的父进程)的进程号文件位置。Listen 80 #服务器监听的端口号。 ServerName https://www.doczj.com/doc/452758962.html,:80 #主站点名称(网站的主机名)。 ServerAdmin admin@https://www.doczj.com/doc/452758962.html, #管理员的邮件地址。 DocumentRoot "/mnt/web/clusting" #主站点的网页存储位置。 以下是对主站点的目录进行访问控制: Options FollowSymLinks AllowOverride None Order allow,deny Allow from all 在上面这段目录属性配置中,主要有下面的选项: Options:配置在特定目录使用哪些特性,常用的值和基本含义如下: ExecCGI:在该目录下允许执行CGI脚本。 FollowSymLinks:在该目录下允许文件系统使用符号连接。 Indexes: 当用户访问该目录时,如果用户找不到DirectoryIndex指定的主页文件(例如index.html),则返回该目录下的文件列表给用户。 SymLinksIfOwnerMatch: 当使用符号连接时,只有当符号连接的文件拥有者与实际文件的拥有者相同时才可以访问。 其它可用值和含义请参阅:https://www.doczj.com/doc/452758962.html,/Apache/ApacheManual/mod/core.html

apache的启动过程 原代码 分析

1./server/log.c 这个里面定义了ap_log_error()。 2./include/httpd.h 这个文件里面申明了基本的内容,如文件路径,字符串长度,等等。 3./server/listen.c 对于apache的httpd,有很多的技术,有MPM多任务并发处理(采用记分板),内存池,线程池。。。 1.在main()有一个for(;;)里面调用了ap_mpm_run。但这个循环里好象只执行了一次,而不是一直在循环。 2.在ap_mpm_run()里,有一个while (!restart_pending && !shutdown_pending)。这个循环每一秒就往返一次,一直执行,直到进程结束。如果是第一次启动,在这个循环里,会调用一个startup_children();在这里面又有一个循环调用make_child()产生初始数量的子进程。 3.在上面的while里,perform_idle_server_maintenance(pconf)会每1秒执行一次,如果你kill -9一个子进程,这个函数就起作用,再重新调用make_child()生成一个子进程。 4.如果执行httpd –k stop,那么ap_mpm_run()会返回错误,在main()就会跳出for(;;),进程退出。5.在make_child()里,有一个fork()调用产生子进程,然后在子进程里调用child_main()进行子进程的初始化处理。 linux-lncx:/home/apache/httpd-2.2.11/server # ls main.c main.c linux-lncx:/home/apache/httpd-2.2.11/server # int main(int argc, const char * const argv[]) { char c; int configtestonly = 0; const char *confname = SERVER_CONFIG_FILE; const char *def_server_root = HTTPD_ROOT; const char *temp_error_log = NULL; const char *error; process_rec *process; server_rec *server_conf; apr_pool_t *pglobal; apr_pool_t *pconf; apr_pool_t *plog; /* Pool of log streams, reset _after_ each read of conf */ apr_pool_t *ptemp; /* Pool for temporary config stuff, reset often */ apr_pool_t *pcommands; /* Pool for -D, -C and -c switches */ apr_getopt_t *opt; apr_status_t rv; module **mod; const char *optarg; APR_OPTIONAL_FN_TYPE(ap_signal_server) *signal_server; AP_MONCONTROL(0); /* turn off profiling of startup */ process = init_process(&argc, &argv); pglobal = process->pool; pconf = process->pconf; ap_server_argv0 = process->short_name; #if APR_CHARSET_EBCDIC if (ap_init_ebcdic(pglobal) != APR_SUCCESS) { destroy_and_exit_process(process, 1); } #endif apr_pool_create(&pcommands, pglobal); apr_pool_tag(pcommands, "pcommands"); ap_server_pre_read_config = apr_array_make(pcommands, 1, sizeof(char *)); ap_server_post_read_config = apr_array_make(pcommands, 1, sizeof(char *)); ap_server_config_defines = apr_array_make(pcommands, 1, sizeof(char *)); error = ap_setup_prelinked_modules(process); if (error) { ap_log_error(APLOG_MARK, APLOG_STARTUP|APLOG_EMERG, 0, NULL, "%s: %s", ap_server_argv0, error); destroy_and_exit_process(process, 1); } ap_run_rewrite_args(process);

log4j.properties 详解与配置步骤

log4j.properties 详解与配置步骤 一、入门实例 1.新建一个JAva工程,导入包log4j-1. 2.17.jar,整个工程最终目录如下 2、src同级创建并设置log4j.properties

3、设置日志内容 1.package com.mucfc; 2.import org.apache.log4j.Logger; 3./** 4. *@author linbingwen 5. *@2015年5月18日9:14:21 6. */ 7.public class Test { 8.private static Logger logger = Logger.getLogger(Test.class); 9. 10./** 11. * @param args 12. */ 13.public static void main(String[] args) { 14.// System.out.println("This is println message."); 15. 16.// 记录debug级别的信息

17. logger.debug("This is debug message."); 18.// 记录info级别的信息 19. https://www.doczj.com/doc/452758962.html,("This is info message."); 20.// 记录error级别的信息 21. logger.error("This is error message."); 22. } 23. 24.} 4、输出结果 (1)首先是控制台的信息 (2)再来看输出的文件 内容如下,发现已按照要求输出到对应的文档中去了。

Apache_日志配置及查看方法

Apache 日志配置及查看方法 有时候我们需要定制Apache默认日志的格式和内容,比如增加或减少日志所记录的信息、改变默认日志文件的格式等。本文介绍可以用日志记录的所有信息,以及如何设置Apache 使其记录这些信息。 一、定义日志格式 很久以前,日志文件只有一种格式,这就是“公共格式”,许多人已经习惯于使用这种格式。随后出现了定制日志格式,而且看起来定制日志格式更很受欢迎,即使公共日志格式本身也重新用定制日志格式定义。本文介绍的就是如何随心所欲地定制日志文件的格式、如何让日志文件记录自己想要的信息。 定制日志文件的格式涉及到两个指令,即LogFormat指令和CustomLog指令,默认httpd.conf文件提供了关于这两个指令的几个示例。 LogFormat指令定义格式并为格式指定一个名字,以后我们就可以直接引用这个名字。CustomLog指令设置日志文件,并指明日志文件所用的格式(通常通过格式的名字)。 LogFormat指令的功能是定义日志格式并为它指定一个名字。例如,在默认的 httpd.conf文件中,我们可以找到下面这行代码: LogFormat "%h %l %u %t \"%r\" %>s %b" common 该指令创建了一种名为“common”的日志格式,日志的格式在双引号包围的内容中指定。格式字符串中的每一个变量代表着一项特定的信息,这些信息按照格式串规定的次序写入到日志文件。 Apache文档已经给出了所有可用于格式串的变量及其含义,下面是其译文: %...a: 远程IP地址 %...A: 本地IP地址 %...B: 已发送的字节数,不包含HTTP头 %...b: CLF格式的已发送字节数量,不包含HTTP头。例如当没有发送数据时,写入‘-’而不是0。 %...{FOOBAR}e: 环境变量FOOBAR的内容 %...f: 文件名字 %...h: 远程主机 %...H 请求的协议 %...{Foobar}i: Foobar的内容,发送给服务器的请求的标头行。 %...l: 远程登录名字(来自identd,如提供的话) %...m 请求的方法 %...{Foobar}n: 来自另外一个模块的注解“Foobar”的内容

apache 配置 access_log 日志 格式 问题

apache配置access_log日志格式问题 要有效地管理Web服务器,就有必要反馈服务器的活动、性能以及出现的问题。Apache HTTP服务器提供了非常全面而灵活的日志记录功能。本文将阐述如何配置文件以及如何理解日志内容。 安全警告 任何人只要对Apache存放日志文件的目录具有写权限,也就当然地可以获得启动Apache的用户(通常是root)的权限,绝对不要随意给予任何人存放日志文件目录的写权限。细节请参见安全方面的提示。 另外,日志文件可能会包含未加转换的来自用户的信息,用户就有机会恶意插入控制符,所以处理原始日志时应该当心这个问题。 错误日志(Error Log) 错误日志是最重要的日志文件,其文件名和位置取决于ErrorLog指令。Apache httpd将在这个文件中存放诊断信息和处理请求中出现的错误,由于这里经常包含了出错细节以及如何解决,如果服务器启动或运行中有问题,首先就应该查看这个错误日志。 错误日志通常被写入一个文件(unix系统上一般是error_log,Windows和OS/2上一般是error.log)。在unix系统中,错误日志还可能被重定向到syslog或通过管道操作传递给一个程序。 错误日志的格式相对灵活,并可以附加文字描述。某些信息会出现在绝大多数记录中,一个典型的例子是: [Wed Oct 11 14:32:52 2000] [error] [client 127.0.0.1] client denied by server configuration: /export/home/live/ap/htdocs/test

其中,第一项是错误发生的日期和时间;第二项是错误的严重性,LogLevel 指令使只有高于指定严重性级别的错误才会被记录;第三项是导致错误的IP地址;此后是信息本身,在此例中,服务器拒绝了这个客户的访问。服务器在记录被访问文件时,用的是文件系统路径,而不是Web路径。 错误日志中会包含类似上述例子的多种类型的信息。此外,CGI脚本中任何输出到stderr的信息会作为调试信息原封不动地记录到错误日志中。 用户可以增加或删除错误日志的项。但是对某些特殊请求,在访问日志(access log)中也会有相应的记录,比如上述例子在访问日志中也会有相应的记录,其状态码是403,因为访问日志也可以定制,所以可以从访问日志中得到错误事件的更多信息。 在测试中,对任何问题持续监视错误日志是非常有用的。在 unix系统中,可以 这样做: tail -f error_log 访问日志(Access Log) CustomLog指令,LogFormat指令可以简化日志的内容。这里阐述如何配置服务器的访问日志。 实施日志管理,首先当然必须产生访问日志,然后才能分析日志从而得到有用的统计信息。日志分析不是Web服务器的职责,已超出本文的范畴,更多资料和有关分析工具的信息,可以查看Open Directory或Yahoo 。 不同版本的Apache httpd使用了不同的模块和指令来控制对访问的记录,包括mod_log_referer, mod_log_agent和TransferLog指令。现在,CustomLog 指令包含了旧版本中相关指令的所有功能。

Apache配置详解

Apache配置详解 Apache的配置由httpd.conf文件配置,因此下面的配置指令都是在httpd.conf文件中修改。 主站点的配置(基本配置) (1) 基本配置: ServerRoot "/mnt/software/apache2" #你的apache软件安装的位置。其它指定的目录如果没有指定绝对路径,则目录是相对于该目录。 PidFile logs/httpd.pid #第一个httpd进程(所有其他进程的父进程)的进程号文件位置。 Listen 80 #服务器监听的端口号。 ServerName https://www.doczj.com/doc/452758962.html,:80 #主站点名称(网站的主机名)。 ServerAdmin admin@https://www.doczj.com/doc/452758962.html, #管理员的邮件地址。 DocumentRoot "/mnt/web/clusting" #主站点的网页存储位置。 以下是对主站点的目录进行访问控制: Options FollowSymLinks AllowOverride None Order allow,deny Allow from all 在上面这段目录属性配置中,主要有下面的选项: Options:配置在特定目录使用哪些特性,常用的值和基本含义如下: ExecCGI: 在该目录下允许执行CGI脚本。 FollowSymLinks: 在该目录下允许文件系统使用符号连接。 Indexes: 当用户访问该目录时,如果用户找不到DirectoryIndex指定的主页文件(例如index.html),则返回该目录下的文件列表给用户。 SymLinksIfOwnerMatch: 当使用符号连接时,只有当符号连接的文件拥有者与实际文件的拥有者相同时才可以访问。 其它可用值和含义请参阅:https://www.doczj.com/doc/452758962.html,/Apache/ApacheManual/mod/core.html#options AllowOverride:允许存在于.htaccess文件中的指令类型(.htaccess文件名是可以改变的,其文件名由AccessFileName指令决定): None: 当AllowOverride被设置为None时。不搜索该目录下的.htaccess文件(可以减小服务器开销)。All: 在.htaccess文件中可以使用所有的指令。 其他的可用值及含义(如:Options FileInfo AuthConfig Limit等),请参看:https://www.doczj.com/doc/452758962.html,/Apache/ApacheManual/mod/core.html#AllowOverride Order:控制在访问时Allow和Deny两个访问规则哪个优先: Allow:允许访问的主机列表(可用域名或子网,例如:Allow from 192.168.0.0/16)。 Deny:拒绝访问的主机列表。 更详细的用法可参看:https://www.doczj.com/doc/452758962.html,/Apache/ApacheManual/mod/mod_access.html#order DirectoryIndex index.html index.htm index.php #主页文件的设置(本例将主页文件设置为:index.html,index.htm和index.php) (2) 服务器的优化(MPM: Multi-Processing Modules) apache2主要的优势就是对多处理器的支持更好,在编译时同过使用--with-mpm选项来决定apache2的工作模式。如果知道当前的apache2使用什么工作机制,可以通过httpd -l命令列出apache的所有模块,就可以知道其工作方式: prefork:如果httpd -l列出prefork.c,则需要对下面的段进行配置:

Apache日志详解

Apache日志详解 来源:Linux技术中坚站等级:默认等级 发布于2005-05-29 00:43 被读2395次【字体:大中小】 https://www.doczj.com/doc/452758962.html,/ 访问日志 错误日志 定制日志 日志分析 高级技术 想要知道什么人在什么时候浏览了网站的哪些内容吗?查看Apache的访问日志就可以知道。访问日志是Apache的标准日志,本文详细解释了访问日志的内容以及相关选项的配置。 访问日志的格式跳转到》》》错误日志日志分析高级技术定制日志 Apache内建了记录服务器活动的功能,这就是它的日志功能。这个《Apache日志》系列文章介绍的就是Apache的访问日志、错误日志,以及如何分析日志数据,如何定制Apache日志,如何从日志数据生成统计报表等内容。 如果Apache的安装方式是默认安装,服务器一运行就会有两个日志文件生成。这两个文件是access_log(在Windows上是access.log)和error_log(在Windows上是error.log)。采用默认安装方式时,这些文件可以在/usr/local/apache/logs下找到;对于Windows系统,这些日志文件将保存在Apache安装目录的logs子目录。不同的包管理器会把日志文件放到各种不同的位置,所以你可能需要找找其他的地方,或者通过配置文件查看这些日志文件配置到了什么地方。 正如其名字所示,访问日志access_log记录了所有对Web服务器的访问活动。下面是访问日志中一个典型的记录: 216.35.116.91 - - [19/Aug/2000:14:47:37 -0400] "GET / HTTP/1.0" 200 654 这行内容由7项构成,上面的例子中有两项空白,但整行内容仍旧分成了7项。 第一项信息是远程主机的地址,即它表明访问网站的究竟是谁。在上面的例子中,访

Apache服务器

8.3 Apache服务器 8.3.1 Apache概述 Apache是Internet上最流行的Web服务器软件,它安全、高效、稳定、适用于各种平台,关键它还是免费的和开发源代码的。从1995年开始直到今天,经过不断的发展,Apache 小组开发的Apache HTTPd服务器软件已经成为市场的领导者。在所有的Web服务器软件中,Apache占有绝对优势,远远领先于Microsoft的IIS服务器软件。 许多世界知名的网站都是基于Linux操作系统的,如yahoo、Hotmail等网站。在Linux 系统上架设Web服务器所使用的最多最广泛的软件就是Apache。它功能强大,高度稳定,与Linux配合得十分完美,是在Linux上构建Web站点时首选的方案。另外,也有Windows 平台下的Apache软件。可以到官方网站https://www.doczj.com/doc/452758962.html,免费下载Apache最新的版本。 8.3.2 Apache服务器的安装 在安装Red Hat Linux 9时,可以选择安装Apache服务器,而在Red Hat Linux 9中内置的Apache服务器版本为httpd-2.0.40-21,如果不知道是否已安装此版本的软件,可以使用下面的方法来判断。 [root@rh9 root]# rpm -qa httpd httpd-2.0.40-21.i386.rpm 如果看到上面的结果,则表示该软件已经安装。否则,需要找出第二张安装光盘,保存在RedHat/RPMS目录的httpd-2.0.40-21.i386.rpm。可以使用下面的命令进行安装。 [root@rh9 root]# mount /mnt/cdrom [root@rh9 root]# cd /mnt/cdrom/Red Hat/RPMS [root@rh9 root]# rpm -ivh httpd-2.0.40-21.i386.rpm 另外,为了使用图形化的Apache服务器管理工具,建议用户也安装redhat-config-httpd-1.0.1-18.i386.rpm软件包。 8.3.3 Apache服务器的基本配置 Apache的配置文件是包含了若干指令的纯文本文件,其文件名为httpd.conf,在Apache 启动时,会自动读取配置文件中的内容,并根据配置指令影响Apache服务器的运行。配置文件改变后,只有在下次启动或重新启动后才会生效。 配置文件中的内容分为注释行和服务器配置命令行。行首有“#”的即为注释行,注释不能出现在指令的后边,除了注释行和空行外,服务器会认为其他的行都是配置命令行。配置文件中的指令不区分大小写,但指令的参数通常是对大小写敏感的。对于较长的配置命令,行末可使用反斜杠“\”换行,但反斜杠与下一行之间不能有任何其他字符(包括空白)。可以使用apachectl或者httpd的命令行参数-t来检查配置文件中的错误,而无需启动Apache 服务器。 [root@rh9 root]# httpd -t httpd: Could not determine the server's fully qualified domain name, using 127.0.0.1 for ServerName Syntax OK

相关主题
文本预览
相关文档 最新文档