当前位置: 首页 > news >正文

Nginx访问日志、日志切割、静态文件不记录日志和过期时间

Nginx访问日志

Nginx访问日志主要有两个参数控制:
log_format #用来定义记录日志的格式(可以定义多种日志格式,取不同名字即可)
access_log #用来指定日至文件的路径及使用的何种日志格式记录日志

设置访问日志的格式,打开配置文件
vim /usr/local/nginx/conf/nginx.conf

搜索关键字log_format就可以找到日志格式配置行
log_format语法格式及参数语法说明如下:
$remote_addr
客户端IP(公网IP)
$http_x_forwarded_for
代理服务器的IP
$time_local
服务器本地时间
$host
访问主机名(域名)
$request_uri
访问的url地址
$status
状态码
$http_referer
referer
$http_user_agent
user_agent

除了在主配置文件nginx.conf里定义日志格式外,还需要在虚拟主机配置文件中增加。
打开虚拟主机配置文件添加如下行:
access_log /tmp/1.log combined_realip;

这里的/tmp/1.log为配置文件存放的地址,combined_realip就是在nginx.conf中定义的日志格式名字

更改配置文件后需要重新加载配置文件才会生效

Nginx日志切割

所谓自动分割Nginx日志文件,就是指Rotate Nginx log files,即让Nginx每天(或每个星期,可自定义控制)生成一个日志文件,而不是将Nginx所有的运行日志都放置在一个文件中,这样每个日志文件都相对较小,定位问题也更容易
日志切割可以写一个脚本实现,脚本文件最好放在/usr/local/sbin/下
执行命令:
vim /usr/local/sbin/nginx_logrotate.sh

写入如下的内容:

#! /bin/bash
d=date -d "-1 day" +%Y%m%d
logdir="/tmp/"
nginx_pid="/usr/local/nginx/logs/nginx.pid"
cd $logdir
for log in ls *.log
do
    mv $log $log-$d
done
/bin/kill -HUP cat $nginx_pid

写完脚本之后在加入仍无计划即可
crontab -e

添加如下内容:
0 0 * * * /bin/bash /usr/local/sbin/nginx_log_rotate.sh

静态文件不记录日志和过期时间

编辑虚拟主机配置文件
vim /usr/local/nginx/conf/vhost/test.com.conf

在配置文件中加入如下内容

location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$              
    {
          expires      7d;                                                   
          access_log off;                                                   
    }
     location ~ .*\.(js|css)$                                            
    {
          expires      12h;                                                  
          access_log off;                                                   
    }

location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$ 匹配文件类型
expires 7d; 过期时间为7天
access_log off; 不记录该类型文件的访问日志
location ~ .*\.(js|css)$ 匹配文件类型
expires 12h; 过期时间为12小时
access_log off; 不记录该类型文件的访问日志
更改配置文件后需要检查配置文件以及重新加载
/usr/local/nginx/sbin/nginx -t
/usr/local/nginx/sbin/nginx -s reload

转载于:https://blog.51cto.com/13658403/2127811

相关文章:

  • 十七、编辑头像(带参数)
  • 完全检查点 (normal checkpoint)
  • name 'admin' is not defined第一个问题,新建Django项目,运行时报错
  • zxing 扫一扫 实用工具效率很高
  • Wireshark抓包工具使用
  • Android性能优化之APK瘦身详解(瘦身73%)
  • php课程 6-22 字符串格式化函数有哪些(精问)
  • java程序员进阶:618大战前夕,一条SQL引发的深思—MySQL优化
  • kafka 发送消息使用反射调用方法
  • kubernetes基础概念(第二节)
  • postMan测试https接口
  • 深入理解javascript系列(七):闭包(1)
  • Spring cloud 安全部署与性能优化
  • GEF入门实例_总结_06_为编辑器添加内容
  • CIKERS Shane 20190605
  • php的引用
  • “寒冬”下的金三银四跳槽季来了,帮你客观分析一下局面
  • 【挥舞JS】JS实现继承,封装一个extends方法
  • 【刷算法】从上往下打印二叉树
  • 【跃迁之路】【699天】程序员高效学习方法论探索系列(实验阶段456-2019.1.19)...
  • canvas绘制圆角头像
  • ECMAScript入门(七)--Module语法
  • exif信息对照
  • iOS帅气加载动画、通知视图、红包助手、引导页、导航栏、朋友圈、小游戏等效果源码...
  • Js基础知识(一) - 变量
  • JS题目及答案整理
  • Linux编程学习笔记 | Linux多线程学习[2] - 线程的同步
  • mysql外键的使用
  • MySQL主从复制读写分离及奇怪的问题
  • Nginx 通过 Lua + Redis 实现动态封禁 IP
  • Node 版本管理
  • unity如何实现一个固定宽度的orthagraphic相机
  • Vue.js 移动端适配之 vw 解决方案
  • Vue官网教程学习过程中值得记录的一些事情
  • Xmanager 远程桌面 CentOS 7
  • 从 Android Sample ApiDemos 中学习 android.animation API 的用法
  • 基于游标的分页接口实现
  • 看域名解析域名安全对SEO的影响
  • 前端面试之闭包
  • 使用权重正则化较少模型过拟合
  • 思否第一天
  • 应用生命周期终极 DevOps 工具包
  • 用Canvas画一棵二叉树
  • LevelDB 入门 —— 全面了解 LevelDB 的功能特性
  • Salesforce和SAP Netweaver里数据库表的元数据设计
  • Spark2.4.0源码分析之WorldCount 默认shuffling并行度为200(九) ...
  • # Python csv、xlsx、json、二进制(MP3) 文件读写基本使用
  • (13)Hive调优——动态分区导致的小文件问题
  • (4)事件处理——(2)在页面加载的时候执行任务(Performing tasks on page load)...
  • (Matalb时序预测)PSO-BP粒子群算法优化BP神经网络的多维时序回归预测
  • (附源码)小程序 交通违法举报系统 毕业设计 242045
  • (三)docker:Dockerfile构建容器运行jar包
  • (四)linux文件内容查看
  • .NET 8.0 发布到 IIS
  • .NET MVC第三章、三种传值方式