squid日志记录x-forwarded-for和截取头信息的日志规则!
2011-04-25 16:51
369 查看
最近研发童鞋要开发自己的日志分析系统,需要把squid 2.7版本日志改变下,这下可苦了我了。squid日志我就知道配置文件的那几个。squid日志中还需要x-forwarded-for的字段,我记得还得重新编译程序。
如下为添加x-forwarded的编译步骤:
1,tar -xzf squid.tgz
2,cd squid
3,./configure --prefix=/usr/local/squid-2.7.stable9 --enable-useragent-log --enable-referer-log --enable-default-err-language=Simplify_Chinese --enable-err-languages="Simplify_Chinese English" --disable-internal-dns --enable-underscores --enable-dlmalloc --with-pthreads --enable-epoll --enable-stacktrace --enable-removal-policies="heap,lru" --enable-delay-pools --enable-storeio="aufs,coss,diskd,ufs" --with-maxfd=65536 --enable-follow-x-forwarded-for
4,make && make install
安装完成后,在原来的配置文件中添加
forwarded_for on
开启forwarded-for转发,不然截取不到forwarded信息头
在添加日志格式的部分,我查了不少资料,squid 3.0 是在logformat 后添加的:%{X-Forwarded-For}i,可在squid 2.7不管用,配置文件报错,经过试验,终于解决此问题。
logformat日志格式中添加
"%{X-Forwarded-For}<h" 或 "%{X-Forwarded-For}>h"
因为没有外部有X-forwarded头的客户机访问,没法确认是哪个,自己汗个。。。。
再就是研发要求的特殊日志格式,实际截取是http头的内容,包括发送的和接受的。
如下是我在日志中测试的 %>h 和%<h 日志记录的文件内容
%>h的记录
Host:%20test152.xxxxxx.com%0D%0AUser-Agent:%20Mozilla/5.0%20(Windows;%20U;%20Windows%20NT%205.1;%20zh-CN;%20rv:1.9.2.16)%20Gecko/20110319%20Firefox/3.6.16%0D%0AAccept:%20text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8%0D%0AAccept-Language:%20zh-cn,zh;q=0.5%0D%0AAccept-Encoding:%20gzip,deflate%0D%0AAccept-Charset:%20GB2312,utf-8;q=0.7,*;q=0.7%0D%0AKeep-Alive:%20115%0D%0AConnection:%20keep-alive%0D%0ACookie:%20user_ident=1303698677536520%0D%0AIf-Modified-Since:%20Wed,%2020%20Apr%202011%2005:49:33%20GMT%0D%0ACache-Control:%20max-age=0%0D%0A
%<h的记录
HTTP/1.1%20304%20Not%20Modified%0D%0AServer:%20nginx%0D%0ADate:%20Mon,%2025%20Apr%202011%2008:58:30%20GMT%0D%0ALast-Modified:%20Wed,%2020%20Apr%202011%2005:49:33%20GMT%0D%0ACache-Control:%20max-age=300%0D%0AX-Cache:%20MISS%20from%20cache.chinaitv.cc%0D%0AVia:%201.1%20cache.xxxxxxx.com:80%20(squid/2.7.STABLE9)%0D%0A%0D
看以上记录可能有心人就看出默认配置文件中日志格式的 "%{Referer}>h" "%{User-Agent}>h" 怎么截取到的。我日志就按照此方式截取的,想要啥就截取啥好了。看到这还不明白的童鞋,可以对照默认配置文件中记录的日志,应该不难理解。
如下为添加x-forwarded的编译步骤:
1,tar -xzf squid.tgz
2,cd squid
3,./configure --prefix=/usr/local/squid-2.7.stable9 --enable-useragent-log --enable-referer-log --enable-default-err-language=Simplify_Chinese --enable-err-languages="Simplify_Chinese English" --disable-internal-dns --enable-underscores --enable-dlmalloc --with-pthreads --enable-epoll --enable-stacktrace --enable-removal-policies="heap,lru" --enable-delay-pools --enable-storeio="aufs,coss,diskd,ufs" --with-maxfd=65536 --enable-follow-x-forwarded-for
4,make && make install
安装完成后,在原来的配置文件中添加
forwarded_for on
开启forwarded-for转发,不然截取不到forwarded信息头
在添加日志格式的部分,我查了不少资料,squid 3.0 是在logformat 后添加的:%{X-Forwarded-For}i,可在squid 2.7不管用,配置文件报错,经过试验,终于解决此问题。
logformat日志格式中添加
"%{X-Forwarded-For}<h" 或 "%{X-Forwarded-For}>h"
因为没有外部有X-forwarded头的客户机访问,没法确认是哪个,自己汗个。。。。
再就是研发要求的特殊日志格式,实际截取是http头的内容,包括发送的和接受的。
如下是我在日志中测试的 %>h 和%<h 日志记录的文件内容
%>h的记录
Host:%20test152.xxxxxx.com%0D%0AUser-Agent:%20Mozilla/5.0%20(Windows;%20U;%20Windows%20NT%205.1;%20zh-CN;%20rv:1.9.2.16)%20Gecko/20110319%20Firefox/3.6.16%0D%0AAccept:%20text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8%0D%0AAccept-Language:%20zh-cn,zh;q=0.5%0D%0AAccept-Encoding:%20gzip,deflate%0D%0AAccept-Charset:%20GB2312,utf-8;q=0.7,*;q=0.7%0D%0AKeep-Alive:%20115%0D%0AConnection:%20keep-alive%0D%0ACookie:%20user_ident=1303698677536520%0D%0AIf-Modified-Since:%20Wed,%2020%20Apr%202011%2005:49:33%20GMT%0D%0ACache-Control:%20max-age=0%0D%0A
%<h的记录
HTTP/1.1%20304%20Not%20Modified%0D%0AServer:%20nginx%0D%0ADate:%20Mon,%2025%20Apr%202011%2008:58:30%20GMT%0D%0ALast-Modified:%20Wed,%2020%20Apr%202011%2005:49:33%20GMT%0D%0ACache-Control:%20max-age=300%0D%0AX-Cache:%20MISS%20from%20cache.chinaitv.cc%0D%0AVia:%201.1%20cache.xxxxxxx.com:80%20(squid/2.7.STABLE9)%0D%0A%0D
看以上记录可能有心人就看出默认配置文件中日志格式的 "%{Referer}>h" "%{User-Agent}>h" 怎么截取到的。我日志就按照此方式截取的,想要啥就截取啥好了。看到这还不明白的童鞋,可以对照默认配置文件中记录的日志,应该不难理解。
相关文章推荐
- 阿里云X-Forwarded-For 发现tomcat记录的日志全部来自于SLB转发的IP地址,不能获取到请求的真实IP。 - Draco - 博客频道 - CSDN.NET
- 阿里云X-Forwarded-For 发现tomcat记录的日志全部来自于SLB转发的IP地址,不能获取到请求的真实IP。
- 阿里云X-Forwarded-For 发现tomcat记录的日志所有来自于SLB转发的IP地址,不能获取到请求的真实IP。
- apache 日志记录 http_x_forwarded_for
- Squid不记录部分内容css,js,图照片的日志的方法
- asp.net 错误信息记录到日志文件
- 使用触发器实现记录oracle用户登录失败信息到alert.log日志文件
- 用于RichTextBox控件记录日志信息
- Spring MVC异常统一处理(异常信息的国际化,日志记录)
- ASP.NET MVC中错误日志信息记录
- 如何在记录异常日志的时候包含源代码文件名和行号等信息
- Oracle补充日志及日志记录规则
- 日志记录异常堆栈详细信息
- Log4j中将控制台出现的异常信息完整的记录到日志文件
- DI v6.2,从测试环境移植到生产环境,如何清理以前运行过的垃圾数据(作业监控记录等信息及后台日志记录相关数据)
- 让Windows下的Tomcat将控制台信息记录到日志
- 消息信息第五章(4)Libgdx应用框架之日志记录
- YII2 日志模块 之 使用数据库记录错误信息
- Postgres日志记录用户登录退出信息
- Nginx做负载均衡时X-Forwarded-For信息头的处理