使用CDN之后APACHE日志记录中IP地址不正确的解决方案,apache日志LogFormat参数说明

前段时间在搞APACHE日志解析,装好了awstats之后,那二日开展了观看,

apache日志LogFormat参数表明

报表日期 月 1 月 二〇〇九
第三次游览日期 贰零壹零年0八月四十二十三日 11:04
近年来游览日期 2008年0十七月十八日 23:59
    游览者 游历人次 网页数 文件数 字节
浏览器流量 * 77  226  (2.93 游历人次/参观者卡塔尔(英语:State of Qatar) 508979 (2252.11
网页数/游览卡塔尔(قطر‎ 509492 (2254.38 文件数/游历卡塔尔国 13.67 G字节 (63430.28
K字节/游历卡塔尔(قطر‎
非浏览器流量 *  117312 122716 736.24 M字节

 

那边的结果很让人费解,通过google总括网址的单身IP访谈量有2W做,这里突显的数字天堂鬼世界。 
前面包车型地铁网页数和文书数又都与实际相切合。  经过查找原因开掘apache日志里记录的IP地址不正确,超越三分之一都是cdn的节点地址。
产生的缘故很鲜明是因为CDN产生的,在此以前在网址后台程序里读取客户IP地址也现身了近乎难题。
能够接纳print_r($_SE哈弗VEGranCabrio卡塔尔国  (PHP语言卡塔尔国,查找到真实的顾客IP地址,本站为
$_SERVER[‘HTTP_CDN-SRC-IP’]. 
这么些是CDN指引的实际的顾客IP地址(这里不计较客户是不是选用代理卡塔尔(قطر‎。
但在APACHE的日志记录里怎么行使这一个值吗? 
本身在GOOGLE和百度里查找了遥遥无期都未有找到呼应的材料大概说建设方案,只可以本人思想寻求了。
细心看了下APACHE里日记记录的相关配置,针对LogFormat:
LogFormat “%h %l %u %t /”%r/” %>s %b /”%{Referer}i/”
/”%{User-Agent}i/”” combined
自家观念里面包车型大巴%{Referer}和%{User-Agent} 是怎么获取的,
那四个是在前后相继里也是时有时无会用到的东西,顾客端发送央求的时候
这八个音讯都以作为头详细发送到服务器的。后来查看了下访问时的全部头音讯,如下:

在apache的铺排文件httpd.conf里暗许有这么一句配置

复制代码 代码如下:

 

Array
(
    [Cdn-Src-Ip] => 222.44.46.58
    [Accept] => image/gif, image/jpeg, image/pjpeg, image/pjpeg,
application/x-shockwave-flash, application/vnd.ms-excel,
application/vnd.ms-powerpoint, application/msword, */*
    [Accept-Language] => zh-cn
    [User-Agent] => Mozilla/4.0 (compatible; MSIE 8.0; Windows NT
5.1; Trident/4.0; CIBA; .NET CLR 2.0.50727)
    [Host] => www.875.cn
    [Cookie] =>
__utma=217127135.1188793388.1263188369.1263364666.1263368206.5;
__utmz=217127135.1263368206.5.2.utmcsr=211.167.92.250|utmccn=(referral)|utmcmd=referral|utmcct=/cgi-bin/awstats/awstats.pl;
viewedShopsID=621; viewedShopsPP=%u6B27%u5C1A%u574A
    [Accept-Encoding] => gzip
    [Via] => 1.1 hnay40:80 (Cdn Cache Server V2.0)
    [Connection] => keep-alive
)

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

本来rerfer的时候也可以有rerfer新闻出以后头顶音讯里,上面也可以有库克ie、Host、User-Agent等新闻,那一个音讯都以能够在apache配置文件里能够行使的变量,当然这里Cdn-Src-Ip就是本人想要的顾客的实际IP地址。
于是估测计算${Cdn-Src-Ip}在日记记录格式里应该也是能够使用的。
前边的i应该是指忽视大小写的意趣。于是得出二个解决方案:

 

增进四个新的logformat音信

那是APACHE的日记记录格式设置,那么这种格式里的顺序参数都代表如何看头吧,下边看一下切实的参数表明:

复制代码 代码如下:

 

LogFormat “%{Cdn-Src-Ip}i %l %u %t /”%r/” %>s %b /”%{Referer}i/”
/”%{User-Agent}i/”” combinedcdn

恳请小编的景况将透过在格式字符串中放置各样”%”转义符的诀要来记录,它们在写入日志文件时,根据下表的概念实行转移:

在急需记录的网址配置里扩张:

 

复制代码 代码如下:

%a 远端IP地址

CustomLog “|/usr/local/sbin/cronolog
/usr/local/apache/logs/www.875.cn-access_log.%Y%m%d” combinedcdn
env=!IMAGES

%A 本机IP地址

重启apache服务,然后访谈网址,查看日志记录开采今后能够正常记录客商IP地址了。

%B 除HTTP头以外传送的字节数

您或然感兴趣的稿子:

  • 在Python中动用Pandas库管理大数据的简易介绍
  • Python科学总括之Pandas详细明白
  • 接收Python中的pandas库对cdn日志举行深入分析安详严整

%b
以CLF格式呈现的除HTTP头以外传送的字节数,也正是当未有字节传送时浮现’-‘而不是0。

%{Foobar}C 在乞求中传递给服务端的cookieFoobar的剧情。

%D 服务器处理本央浼所用时间,以微为单位。

%{FOOBARubicon}e 情状变量FOOBA大切诺基的值

%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(要求AP讴歌ZDX1.2.0及以上版本卡塔尔

%q 查询字符串(若存在则由一个”?”指引,不然重临空串卡塔尔(英语:State of Qatar)

%r 央浼的首先行

%s
状态。对于此中重定向的央求,那几个情景指的是原有央浼的动静,—%>s则指的是终极倡议的气象。

%t 时间,用通常日志时间格式(标准克罗地亚语格式卡塔尔(英语:State of Qatar)

%{format}t
时间,用strftime(3卡塔尔(قطر‎钦赐的格式表示的时光。(默许景况下按当地化格式卡塔尔

%T 拍卖完请求所花时间,以秒为单位。

%u 远程客户名(依据书上说明音讯而来;如若回到status(%s卡塔尔为401,大概是假的卡塔尔(英语:State of Qatar)

%U 央浼的URL路线,不分包查询字符串。

%v 对该央浼提供劳动的正经八百ServerName。

%V 依据UseCanonicalName指令设定的服务器名称。

%X 央浼实现时的连续几日景况:X= 连接在回应实现前半途而废。

+= 应答传送完后无冕维持一而再三番若干次。

-= 应答传送完后关门连接。

 

(在1.3将来的本子中,那几个命令是%c,但这么就和千古的SSL语法:%{var}c冲突了卡塔尔(英语:State of Qatar)

%I
选用的字节数,包括央求头的多寡,並且不能够为零。要利用这几个命令你必须要启用mod_logio模块。

%O
发送的字节数,包含诉求头的数额,而且不能够为零。要使用这些命令你必得启用mod_logio模块。

 

修饰符

能够紧跟在”%”后边加上多个逗号分隔的动静码列表来限定记录的国有国法。比方,”%400,501{User-agent}i”
只记录状态码400和501产生时的User-agent头内容;不满意条件时用”-“替代。状态码前还足以加上”!”前缀表示否
定,”%!200,304,302{Referer}i”记录全数分裂于200,304,302的状态码发生时的Referer头内容。

 

“<“和”>”修饰符能够用来内定对于已被里面重定向的央求是选拔原始的央浼依然接收最后的号令。暗中认可景况下,%s,
%U, %T, %D, %r
使用原有央浼,而全部别的格式串则接收最后伏乞。例如,%>s
能够用来记录央求的结尾状态,而 %<u
则记录三个曾经被里面重定向到非认证财富的伸手的原本认证客商。

 

黄金年代部分验证

出于安全着想,从2.0.46本子开首,%r, %i, %o
中的特殊字符,除了双引号(“卡塔尔(قطر‎和反斜线(\)分别用 \” 和 \\
进行转义、空白字符用C风格(\n, \t
等卡塔尔(قطر‎进行转义以外,非打字与印刷字符和其余特殊字符使用 \xhh
格式进行转义(hh是该字符的16进制编码卡塔尔。在2.0.46原先的版本中,那几个剧情会被完全的按原样记录。这种做法将促成客商端能够在日记中插入调整字
符,所以您在管理那些日记文件的时候要极度小心。

 

在2.0本子中(不相同于1.3卡塔尔(英语:State of Qatar),%b 和 %B
格式字符串并不代表发送到顾客端的字节数,而只是简短的代表HTTP应答字节数(在三番两次中断或行使SSL时与前面四个有所差异卡塔尔(英语:State of Qatar)。mod_logio提供的
%O 格式字符串将会记录发送的实际上字节数。

 

示例

大器晚成对广大的格式串:

 

通用日志格式(CLF卡塔尔国

“%h %l %u %t \”%r\” %>s %b”

 

带设想主机的通用日志格式

“%v %h %l %u %t \”%r\” %>s %b”

 

NCSA扩充/组合日志格式

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

 

Referer日志格式

“%{Referer}i -> %U”

 

Agent(Browser卡塔尔日志格式

“%{User-agent}i”

 

作品最早提到的LogFormat “%h %l %u %t \”%r\” %>s %b
\”%{Referer}i\” \”%{User-Agent}i\”” common 中间用”
“包涵的参数都得以在地方找到相应的辨证,至于最后的要命common,其实就是这种格式的意气风发种标记符,当您套用这种格式记录日志的时候,就能够直接接收标志符了,举例:

CustomLog logs/access_log common

就能够在logs下边发生一个以common为格式记录的日记文件access_log

在apache的配备文件httpd.conf里暗中认可有这么一句配置 logformat %h %l %u %t
\%r\冠亚体育手机网站, %s %b \%{Referer}i\ \%{User-Agent}i\ common
这是APAC…

Post Author: admin

发表评论

电子邮件地址不会被公开。 必填项已用*标注