网站首页 > 技术教程 正文
为了统计和其它用途,经常有人需要自定义Nginx日志,把http请求中的某个字段记录到日志中,刚好在看lua+nginx的文章,第一想到的是用lua赋值来做,但是想想有点小恶心,于是Google了一番,发现Nginx自己就能够记录收到的HTTP请求的头部数据,测试如下方法可用。
测试环境Nginx 1.1.19
1、把自定义头部加入日志
为了方便,我们可能会在HTTP头里面加入特定的字符串,做一些标示,如果需要把标示打到日志里面,其实很简单。
在nginx的http段里面对access log做如下的设置:
……
http {
……
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for" "$http_mycheck"';
access_log logs/access.log main;
……
}
……
我在日志格式的最后面加入了$http_mycheck,那么,Nginx会记录mycheck这个头部,保存到access log里面。
重启Nginx,然后curl测试:
./nginx -s reload
curl -H "mycheck: justtestlog" localhost/whatever.html
curl localhost/whatever.html
然后查看两次请求的日志记录
tail -2 logs/access.log
127.0.0.1 - - [xxx] "GET /whatever.html HTTP/1.1" 200 21 "-" "curl/7.19.7 (x86_64-redhat-linux-gnu) libcurl/7.19.7 NSS/3.19.1 Basic ECC zlib/1.2.3 libidn/1.18 libssh2/1.4.2" "-" "justtestlog"
127.0.0.1 - - [xxx] "GET /whatever.html HTTP/1.1" 200 21 "-" "curl/7.19.7 (x86_64-redhat-linux-gnu) libcurl/7.19.7 NSS/3.19.1 Basic ECC zlib/1.2.3 libidn/1.18 libssh2/1.4.2" "-" "-"
请求头部中没有mycheck字段的时候,日志字段里记为"-",header有mycheck字段的时候,最后一段是mycheck的值。
2、记录用户访问的cookie
……
set $dm_cookie "";
if ($http_cookie ~* "(.+)(?:;|$)") {
set $dm_cookie $1;
}
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for" "$http_mycheck" "$dm_cookie"';
access_log logs/access.log main;
……
这样日志里面就可以看到cookie了,据说可以监控用户和行为。但是在实际中,cookie太长,加上cookie之后,日志量会成倍增长,会加大服务器的压力,如非必要,不建议在日志中添加该字段。
3、记录用户访问的$request_body
……
log_format main '$remote_addr - $remote_user [$time_local] "$request" $request_body '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for" "$http_mycheck" "$dm_cookie"';
access_log logs/access.log main;
……
$request_body 变量已经增加到上述文件里面,可以记录到客户端请求体也就是域名后面进行的传参值,记录这个主要时判断用户名密码一类的,建议生产服务器也不要添加,日志量会增大。
作者:PassZhang
出处:http://dwz.date/cjZr
猜你喜欢
- 2024-10-13 nginx请求头数据读取流程(nginx查看请求header)
- 2024-10-13 Nginx获取请求响应时间,可配合狐表进行请求耗时统计
- 2024-10-13 日常Bug排查-Nginx重复请求?(nginx频繁502)
- 2024-09-28 nginx反向代理负载均衡如何解决超长请求串
- 2024-09-28 从PHP-FPM、NGINX的请求处理来学习阻塞与非阻塞
- 2024-09-28 意犹未尽的一篇Nginx详解原理,面试官看了都忍不住给我点赞
- 2024-09-28 linux里查看web服务器(nginx,http的并发请求数及其tcp连接转态
- 2024-09-28 详解nginx日志中添加请求的response日志
- 2024-09-28 nginx实现range请求(nginx用法)
- 2024-09-28 Web性能优化之-HTTP长连接(电脑性能优化插件)
你 发表评论:
欢迎- 最近发表
-
- Win10 TH2正式版官方ESD映像转换ISO镜像方法详解
- 使用iso镜像升级到Windows 10的步骤
- macOS Ventura 13.2 (22D49) Boot ISO 原版可引导镜像
- 安利一个用ISO镜像文件制作引导U盘的的小工具RUFUS
- CentOS 7使用ISO镜像配置本地yum源
- 用于x86平台的安卓9.0 ISO镜像发布下载:通吃I/A/N、完全免费
- AlmaLinux 9.6发布:升级工具、初步支持IBM Power虚拟化技术
- Rufus写入工具简洁介绍与教程(写入模式)
- 新硬件也能安装使用了,Edge版Linux Mint 21.3镜像发布
- 开源工程师:Ubuntu应该抛弃32位ISO镜像
- 标签列表
-
- 下划线是什么 (87)
- 精美网站 (58)
- qq登录界面 (90)
- nginx 命令 (82)
- nginx .http (73)
- nginx lua (70)
- nginx 重定向 (68)
- Nginx超时 (65)
- nginx 监控 (57)
- odbc (59)
- rar密码破解工具 (62)
- annotation (71)
- 红黑树 (57)
- 智力题 (62)
- php空间申请 (61)
- 按键精灵 注册码 (69)
- 软件测试报告 (59)
- ntcreatefile (64)
- 闪动文字 (56)
- guid (66)
- abap (63)
- mpeg 2 (65)
- column (63)
- dreamweaver教程 (57)
- excel行列转换 (56)
本文暂时没有评论,来添加一个吧(●'◡'●)