Nginx访问日志access.log
1、Nginx访问日志(access.log)介绍
NGINX软件会把每个用户访问网站的日志记录到指定的日志文件里,供网站者分析用户的浏览行为,此功能由http_log_module模块负责。
2、访问日志参数
Nginx的访问日志主要有两个参数控制
参数 |
说明 |
log_format |
用来记录日志的格式(可以定义多种日志格式,取不同名字即可) |
access_log |
用来指定日志文件的路径及使用何种日志格式记录日志 |
Nginx日志默认参数配置如下,
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
Nginx记录日志默认参数配置如下,
access_log logs/access.log main;
3、访问日志配置说明
日志的格式定义说明
语法
定义变量 log_format string ...;
配置再http标签内,日志格式说明,注意所有日志段都已空格分开。
Nginx日志变量说明
Nginx变量 |
说明 |
$remote_addr |
记录访问网站的客户端地址 |
$http_x_forwarded_for |
当前有地理服务器时,设置web节点记录客户端节点的配置,此参数生效的前提是代理服务器也进行了相关的设置 |
$remote_user |
远程客户端用户名称 |
$time_local |
记录访问时间与时区 |
$request |
用户的http请求起始行信息 |
$status |
http状态码,记录请求返回的状态码,例如200、404、301等 |
$body_bytes_sent |
服务器发送客户端的响应body字节数 |
$http_referer |
记录此请求是从哪个链接访问过来的,可以根据referer进行防盗链设置 |
$http_user_agent |
记录客户端访问信息,例如:浏览器、手机客户端。 |
4、访问配置验证
以下页面访问后,打印出的日志
192.168.19.1 - - [17/Jul/2020:23:32:35 +0800] "POST /zabbix/jsrpc.php?output=json-rpc HTTP/1.1" 200 75 "http://192.168.19.154/zabbix/zabbix.php?action=dashboard.view&ddreset=1" "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.130 Safari/537.36"
192.168.19.1 - - [22/Aug/2020:11:30:14 +0800] "GET / HTTP/1.1" 200 612 "-" "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.130 Safari/537.36"
对应说明自行分析,应该不难。
5、Nginx访问日志分割
默认情况下,nginx会把所有的访问日志生产到一个指定的access.log文件里面去,时间长了会越积越多,因此有必要对日志进行分割。
按天数分割,具体脚本如下,
[root@www conf]# cat cut_nginx_log.sh
#!/bin/sh
Dateformat=`date +%Y%m%d`
Basedir="/usr/local/nginx"
Nginxlogdir="$Basedir/logs"
Logname="access"
[ -d $Nginxlogdir ] && cd $Nginxlogdir || exit 1
[ -f ${Logname}.log ] || exit 1
/bin/mv ${Logname}.log ${Dateformat}_${Logname}.log
$Basedir/sbin/nginx -s reload
[root@www conf]# sh -x cut_nginx_log.sh 验证脚本,注意生产验证时间
[root@www logs]# ll 查看
total 8
-rw-r--r-- 1 root root 0 Aug 22 12:28 20200822_access.log
每天凌晨00点30分执行脚本
[root@www logs]# crontab -l
# cut nginx access log by sunny
30 00 * * * /bin/sh /usr/local/nginx/conf/cut_nginx_log.sh >/dev/null 2>&1
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 通过 API 将Deepseek响应流式内容输出到前端
· AI Agent开发,如何调用三方的API Function,是通过提示词来发起调用的吗
2019-08-22 Python常用基础模块报错处理
2019-08-22 ScureCRT基础用法