阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

CentOS下Nginx配置Web访问日志并结合Shell脚本定时切割

485次阅读
没有评论

共计 3351 个字符,预计需要花费 9 分钟才能阅读完成。

在一个成熟的 WEB 系统里,没有日志管理是不可以的,有了日志,可以帮助你得到用户地域来源、跳转来源、使用终端、某个 URL 访问量等相关信息;通过错误日志,你可以得到系统某个服务或 server 的性能瓶颈等。因此,将日志好好利用,你可以得到很多有价值的信息。

日志格式及定义

(1)log_format
log_format 用来设置日志格式,也就是日志文件中每条日志的格式,具体如下:
log_format name(格式名称) type(格式样式)

log_format main ‘$server_name $remote_addr – $remote_user [$time_local] “$request” ‘
‘$status $uptream_status $body_bytes_sent “$http_referer” ‘
‘”$http_user_agent” “$http_x_forwarded_for” ‘
‘$ssl_protocol $ssl_cipher $upstream_addr $request_time $upstream_response_time’;

参数说明:

$server_name:虚拟主机名称。
$remote_addr:远程客户端的 IP 地址。
-:空白,用一个“-”占位符替代,历史原因导致还存在。
$remote_user:远程客户端用户名称,用于记录浏览者进行身份验证时提供的名字,如登录百度的用户名 scq2099yt,如果没有登录就是空白。
[$time_local]:访问的时间与时区,比如 18/Jul/2012:17:00:01 +0800,时间信息最后的 ”+0800″ 表示服务器所处时区位于 UTC 之后的 8 小时。
$request:请求的 URI 和 HTTP 协议,这是整个 PV 日志记录中最有用的信息,记录服务器收到一个什么样的请求
$status:记录请求返回的 http 状态码,比如成功是 200。
$uptream_status:upstream 状态,比如成功是 200.
$body_bytes_sent:发送给客户端的文件主体内容的大小,比如 899,可以将日志每条记录中的这个值累加起来以粗略估计服务器吞吐量。
$http_referer:记录从哪个页面链接访问过来的。
$http_user_agent:客户端浏览器信息
$http_x_forwarded_for:客户端的真实 ip,通常 web 服务器放在反向代理的后面,这样就不能获取到客户的 IP 地址了,通过 $remote_add 拿到的 IP 地址是反向代理服务器的 iP 地址。反向代理服务器在转发请求的 http 头信息中,可以增加 x_forwarded_for 信息,用以记录原有客户端的 IP 地址和原来客户端的请求的服务器地址。
$ssl_protocol:SSL 协议版本,比如 TLSv1。
$ssl_cipher:交换数据中的算法,比如 RC4-SHA。
$upstream_addr:upstream 的地址,即真正提供服务的主机地址。
$request_time:整个请求的总时间。
$upstream_response_time:请求过程中,upstream 的响应时间。

(2)access_log

access_log 指令用来指定日志文件的存放路径(包含日志文件名)、格式和缓存大小,具体如下:
access_log path(存放路径) [format( 自定义日志格式名称) [buffer=size | off]]
举例说明如下:
access_log logs/access.log main;
如果想关闭日志,可以如下:
access_log off;
能够使用 access_log 指令的字段包括:http、server、location。
需要注意的是:Nginx 进程设置的用户和组必须对日志路径有创建文件的权限,否则,会报错。
小技巧:如果需要在 access_log 中记录 post 请求的参数,可以参考这里。
Nginx 支持为每个 location 指定强大的日志记录。同样的连接可以在同一时间输出到不止一个的日志中,更多信息请查看这里,这里,还有这里。

下面拿我本地的虚拟机来简单配置一下日志,并获取日志信息。

日志生成的到 Nginx 根目录 logs/access.log 文件,默认使用“main”日志格式,也可以自定义格式。

在 Nginx 下配置的虚拟主机

server {
 listen 80;
 server_name mytest.com;
 location / {
    root /data/wwwroot/default/mytest;  // 网站目录
    index index.html;
 }
 access_log  /data/wwwlogs/mytest_log/access_nginx.log main; // 日志路径
 当然也可以配置错误日志路径 error_log……

}

Nginx 主配置文件的配置规则

http {
  include mime.types;
  log_format  main ‘$remote_addr – $remote_user  [$time_local]  “$request” ‘
                        ‘$status  $body_bytes_sent “http_referer” ‘
                        ‘ “$http_user_agent” “$http_x_forwarded_for” ‘;
……
}

记得配置完成先命令测试下是否 OK,然后在重新加载配置文件

[root@localhost mytest_log]# nginx -tc /usr/local/nginx/conf/nginx.conf
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful

CentOS 下 Nginx 配置 Web 访问日志并结合 Shell 脚本定时切割

下面来说一下定时切割(虽然新版的 Nginx 已经支持)

根据上面的配置,确定了日志路径之后,我在 /data/crontab 目录下创建了一个脚本

#!/bin/bash
LOGPATH=/data/wwwlogs/mytest_log/access_nginx.log //nginx 的日志路径
BAKPATH=/data/wwwlogs/bak  // 要备份的路径
bak=$BAKPATH/$(date -d yesterday +%Y%m%d%H%M).mytest.access.log  // 定义了的 bak 变量
echo $bak  // 执行输出一下

[root@localhost crontab]# chmod 777 nginx_log.sh  // 赋权限

[root@localhost crontab]# ./nginx_log.sh  // 执行脚本
/data/wwwlogs/bak/201801101205.mytest.access.log // 输出的格式

完整脚本如下

#!/bin/bash
# 设置日志文件存放目录
LOGPATH=/data/wwwlogs/mytest_log/access_nginx.log
BAKPATH=/data/wwwlogs/bak
 #备分文件名称
bak=$BAKPATH/$(date -d yesterday +%Y%m%d%H%M).mytest.access.log
#echo $bak
 #重命名日志文件
mv $LOGPATH $bak
touch $LOGPATH
 #向 nginx 主进程发信号重新打开日志, 确保 nginx.pid 路径正确
 #[root@localhost wwwlogs]# find / -name nginx.pid
 #/var/run/nginx.pid
kill -USR1 `cat  /var/run/nginx.pid`

然后创建定时器

关于定时器详细的讲解在 https://www.linuxidc.com/Linux/2019-03/157851.htm 下

01 00 * * * /data/crontab/nginx_log.sh  # 每天 0 时 1 分 (建议在 02-04 点之间, 系统负载小) 

查看一下 /data/wwwlogs/bak 就会有日志文件了

正文完
星哥玩云-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-21发表,共计3351字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中

星哥玩云

星哥玩云
星哥玩云
分享互联网知识
用户数
4
文章数
19351
评论数
4
阅读量
7991683
文章搜索
热门文章
星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛 NAS-6:抖音视频同步工具,视频下载自动下载保存 前言 各位玩 NAS 的朋友好,我是星哥!...
星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛 NAS-3:安装飞牛 NAS 后的很有必要的操作 前言 如果你已经有了飞牛 NAS 系统,之前...
我把用了20年的360安全卫士卸载了

我把用了20年的360安全卫士卸载了

我把用了 20 年的 360 安全卫士卸载了 是的,正如标题你看到的。 原因 偷摸安装自家的软件 莫名其妙安装...
再见zabbix!轻量级自建服务器监控神器在Linux 的完整部署指南

再见zabbix!轻量级自建服务器监控神器在Linux 的完整部署指南

再见 zabbix!轻量级自建服务器监控神器在 Linux 的完整部署指南 在日常运维中,服务器监控是绕不开的...
飞牛NAS中安装Navidrome音乐文件中文标签乱码问题解决、安装FntermX终端

飞牛NAS中安装Navidrome音乐文件中文标签乱码问题解决、安装FntermX终端

飞牛 NAS 中安装 Navidrome 音乐文件中文标签乱码问题解决、安装 FntermX 终端 问题背景 ...
阿里云CDN
阿里云CDN-提高用户访问的响应速度和成功率
随机文章
从“纸堆”到“电子化”文档:用这个开源系统打造你的智能文档管理系统

从“纸堆”到“电子化”文档:用这个开源系统打造你的智能文档管理系统

从“纸堆”到“电子化”文档:用这个开源系统打造你的智能文档管理系统 大家好,我是星哥。公司的项目文档存了一堆 ...
星哥带你玩飞牛NAS-16:不再错过公众号更新,飞牛NAS搭建RSS

星哥带你玩飞牛NAS-16:不再错过公众号更新,飞牛NAS搭建RSS

  星哥带你玩飞牛 NAS-16:不再错过公众号更新,飞牛 NAS 搭建 RSS 对于经常关注多个微...
告别Notion焦虑!这款全平台开源加密笔记神器,让你的隐私真正“上锁”

告别Notion焦虑!这款全平台开源加密笔记神器,让你的隐私真正“上锁”

  告别 Notion 焦虑!这款全平台开源加密笔记神器,让你的隐私真正“上锁” 引言 在数字笔记工...
如何安装2026年最强个人助理ClawdBot、完整安装教程

如何安装2026年最强个人助理ClawdBot、完整安装教程

如何安装 2026 年最强个人助理 ClawdBot、完整安装教程 一、前言 学不完,根本学不完!近期,一款名...
一句话生成拓扑图!AI+Draw.io 封神开源组合,工具让你的效率爆炸

一句话生成拓扑图!AI+Draw.io 封神开源组合,工具让你的效率爆炸

一句话生成拓扑图!AI+Draw.io 封神开源组合,工具让你的效率爆炸 前言 作为天天跟架构图、拓扑图死磕的...

免费图片视频管理工具让灵感库告别混乱

一言一句话
-「
手气不错
恶意团伙利用 PHP-FPM 未授权访问漏洞发起大规模攻击

恶意团伙利用 PHP-FPM 未授权访问漏洞发起大规模攻击

恶意团伙利用 PHP-FPM 未授权访问漏洞发起大规模攻击 PHP-FPM(FastCGl Process M...
仅2MB大小!开源硬件监控工具:Win11 无缝适配,CPU、GPU、网速全维度掌控

仅2MB大小!开源硬件监控工具:Win11 无缝适配,CPU、GPU、网速全维度掌控

还在忍受动辄数百兆的“全家桶”监控软件?后台偷占资源、界面杂乱冗余,想查个 CPU 温度都要层层点选? 今天给...
手把手教你,购买云服务器并且安装宝塔面板

手把手教你,购买云服务器并且安装宝塔面板

手把手教你,购买云服务器并且安装宝塔面板 前言 大家好,我是星哥。星哥发现很多新手刚接触服务器时,都会被“选购...
星哥带你玩飞牛NAS硬件02:某鱼6张左右就可拿下5盘位的飞牛圣体NAS

星哥带你玩飞牛NAS硬件02:某鱼6张左右就可拿下5盘位的飞牛圣体NAS

星哥带你玩飞牛 NAS 硬件 02:某鱼 6 张左右就可拿下 5 盘位的飞牛圣体 NAS 前言 大家好,我是星...
一句话生成拓扑图!AI+Draw.io 封神开源组合,工具让你的效率爆炸

一句话生成拓扑图!AI+Draw.io 封神开源组合,工具让你的效率爆炸

一句话生成拓扑图!AI+Draw.io 封神开源组合,工具让你的效率爆炸 前言 作为天天跟架构图、拓扑图死磕的...