前言

环境:centos 7.9 nginx version: nginx/1.18.0
nginx会将每个用户访问网站的日志信息保存在/usr/local/nginx/logs/access.log中,这些访问日志信息都是为了供网站提供者分析用户的浏览行为,此日志功能是由ngx_http_log_module模块提供的。

nginx访问日志语法配置说明( access.log)

记录日志信息的格式是什么以及日志文件存放位置,这些操作由nginx.conf配置文件来配置的,如图,nginx的访问日志语法配置设置在http标签内,如下图:

nginx日志格式定义语法

nginx日志格式定义语法如下:

log_format     格式标签名     string....;         #其中log_format是关键字,标签名

nginx的默认日志格式如上图所示那样,为:

log_format  main  '$remote_addr - $remote_user [$time_local] "$request" ''$status $body_bytes_sent "$http_referer" ''"$http_user_agent" "$http_x_forwarded_for"';#其中main就是日志格式的标签名

nginx定义访问日志文件语法

定义好了日志的格式(可以有多种格式),那么就来定义日志文件名、存放的位置以及使用哪种格式记录日志,语法如下:

 access_log /xxx/xxxx/filename  格式标签名;

nginx记录日志的默认参数如下:

access_log  logs/access.log  main;

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日志变量 说明
$remote_addr 远程客户端地址
$remote_user 远程客户端用户名
$time_local 记录访问的时间
$request 用户的http请求起始行信息
$status http状态码,记录请求返回的状态,如:200,404,301等
$body_bytes_sent 服务器发给客户端的响应body字节数
$http_referer 记录此次请求是从哪个链接访问过来的,可根据referer进行防盗链设置
$http_user_agent 记录客户端访问信息,例如:浏览器、手机客户端等
$http_x_forwarded_for 当前端有代理服务器时,设置web节点记录客户端地址的配置

在没有特殊情况下,保持nginx访问日志的默认格式就行了,更多变量可以查阅官方网站https://nginx.org/en/docs/http/nginx_log_module.html

记录日志的access_log参数说明

语法如下:

access_log path format gzip[=level] [buffer=size] [flush=time] ;

gzip[=level]表示压缩级别,buffer=size表示存放访问日志的缓冲区大小,flush=time为将缓冲区刷到磁盘的时间,一般情况下都无须修改这些参数的默认值。

访问日志配置实战

在http标签定义日志格式,然后在虚拟主机里使用该格式来记录访问日志,具体实现如下:

在虚拟主机中引用访问日志格式:
第1个虚拟主机引用访问日志格式:

第2个虚拟主机引用访问日志格式:

第3个虚拟主机引用访问日志格式:

在网页方别测试3个虚拟主机:http://192.168.43.120:81/、http://192.168.43.120:82/、http://192.168.43.120:83/,查看访问日志:



测试发现,访问日志均能按照给定的格式记录日志,访问日志配置正常。

nginx访问日志轮询切割

实际生产中,随着业务访问的日增月累,访问日志的大小会越来越大,这不利于日志的分析和处理,所以有必要对日志进行按天或按小时进行切割,使其分成不同的文件保存,下面将对访问日志进行按天分割,脚本如下:
vim /usr/local/nginx/server_script/cut_access_log.sh

#!/bin/bash
Dateformat=`date +%Y%m%d`
Basedir="/usr/local/nginx"
Nginxlogdir="${Basedir}/logs"
fujiseiko_first="fujiseiko_first.access.log"
fujiseiko_second="fujiseiko_second.access.log"
fujiseiko_third="fujiseiko_third.access.log"
[ -d ${Nginxlogdir} ] && cd $Nginxlogdir || exit 1
[ -f ${fujiseiko_first} ] || exit 1
/bin/mv ${fujiseiko_first} ${Dateformat}_${fujiseiko_first}
[ -f ${fujiseiko_second} ] || exit 1
/bin/mv ${fujiseiko_second} ${Dateformat}_${fujiseiko_second}
[ -f ${fujiseiko_third} ] || exit 1
/bin/mv ${fujiseiko_third} ${Dateformat}_${fujiseiko_third}
/usr/bin/nginx -s reload

注意:脚本实现了切割nginx日志的想法,其主要实现步骤为:将正在写入的Nginx日志改名为带日期格式的文件,然后平滑重启重新加载nginx,因为改了访问日志文件名,所以nginx重启时检查配置文件后发现实际目录并没有定义格式中的访问日志文件名,所以nginx又会重新生成虚拟主机里配置的访问日志文件。
最后通过定时任务每天晚上00:00定时执行脚本,即可实现按天切割nginx日志文件。

crontab -e00 00 * * * /bin/bash /usr/local/nginx/server_script/cut_access_log.sh >/dev/null 2>&1

nginx访问日志配置及访问日志切割实战相关推荐

  1. logback日志配置(控制台日志、输出日志、错误日志)

    logback日志配置(控制台日志.输出日志.错误日志) 一.logback.xml相关配置: <?xml version="1.0" encoding="UTF- ...

  2. nginx.conf文件配置后访问边下载 以及yaf框架使用中NGINX.conf文件配置

    访问变下载 缺这些 location ~ \.php$ {             fastcgi_pass   127.0.0.1:9000;             fastcgi_index   ...

  3. mysql 5.7日志配置_mysql-5.7日志设置

    环境windows7  64位 mysql版本:5.7.17 my.ini配置: [client] port=3306 default-character-set=utf8 [mysqld] port ...

  4. workerman php访问,workerman 配置域名访问 (本地)

    我确定我在我的liunx 终端 运行了 php start.php start 我为workerman在本地指定了一个域名 打开域名提示 Usage: php yourfile.php {start| ...

  5. 渗透测试技术分享——nginx日志配置

    Nginx 日志配置 0x00 前言 日志使用用来进行数据统计.问题排错的重要手段.本文主要介绍 nginx 日志相关的配置如 access_log.log_format.log_not_found. ...

  6. tomcat catalina localhost 没有项目_实用shell脚本--一键配置tomcat定期日志清理功能

    概述 日志文件包含了关于系统中发生的事件的有用信息,在排障过程中或者系统性能分析时经常被用到.对于忙碌的服务器,日志文件大小会增长极快,服务器会很快消耗磁盘空间,这成了个问题.除此之外,处理一个单个的 ...

  7. 日志配置(springboot、mybatis、Lombok)

    Spring Boot在所有内部日志中使用Commons Logging,但是默认配置也提供了对常用日志的支持,如:Java Util Logging,Log4J, Log4J2和Logback.每种 ...

  8. Spring Boot——日志配置

    日志,通常不会在需求阶段作为一个功能单独提出来,也不会在产品方案中看到它的细节.但是,这丝毫不影响它在任何一个系统中的重要的地位. 为了保证服务的高可用,发现问题一定要即使,解决问题一定要迅速,所以生 ...

  9. springboot日志配输出路径配置_SpringBoot日志配置详解

    前言 ​记录应用系统曰志主要有三个原因 记录操作轨迹.监控系统运行状况.回溯系统故障.记录操作行为及操作轨迹数据,可以数据化地分析用户偏好,有助于优化业务逻辑,为用户提供个性化的服务.例如,通过 ac ...

  10. Celery的日志配置及日志按天切分

    Celery的日志配置及日志按天切分 一. Celery定时任务启动 Celery定时任务的启动是通过命令启动的,可以通过-f logfilename或–logfile=logfilename指定日志 ...

最新文章

  1. 工业互联网的十大关键传感器
  2. 浏览器缓存详解:expires,cache-control,last-modified,etag详细说明
  3. No module named ‘mmcv._ext‘
  4. python执行命令并返回结果集_Python接口测试结果集实现封装比较
  5. vivado SOC——hello word(上)建立SOC系统
  6. 背景图片随着浏览器拖动而变化
  7. C语言图形库——EasyX常用函数
  8. 无权有向图的最短路径
  9. Kienct与Arduino学习笔记(2) 深度图像与现实世界的深度图的坐标
  10. win8系统服务器地址怎么查,win8查询服务器地址
  11. android10 谷歌服务框架,google服务框架下载官方版
  12. 剖析虚幻渲染体系(16)- 图形驱动的秘密
  13. dataworks手册_DataWorks 使用教程
  14. android跑马灯监听,TextView跑马灯状态监听
  15. 关于高通8953修改动态logo bootanimation不起作用问题
  16. 用户体验设计师到底有多重要
  17. 机器学习——EM算法
  18. ad2019--LED灯按键类创建元件库
  19. ARM NVIC GIC
  20. 开源星空照片_如何拍摄星空的好照片

热门文章

  1. Windows安装zookeeper和kafka
  2. 【python 类】【部分转发】设计模式 -- 责任链模式 (类之间的联动)
  3. [源码和报告分享] 基于VC++的MFC类库实现的通讯录管理系统
  4. Threading模块
  5. 剑指offer:字符串的排列
  6. [工具] Sublime Text 使用指南
  7. Android是如何绘制View的
  8. div+css总结—FF下div不设置…
  9. Joost-体验全球的视频节目
  10. @Autowired注解位置、@Autowired与@Resource的区别与注入流程