前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Nginx访问日志、日志切割、静态文件管理 原

Nginx访问日志、日志切割、静态文件管理 原

作者头像
阿dai学长
发布2019-04-03 11:17:51
7480
发布2019-04-03 11:17:51
举报
文章被收录于专栏:阿dai_linux阿dai_linux

12.10 访问日志

Nginx日志格式:

代码语言:javascript
复制
[root@adailinux ~]# vim /usr/local/nginx/conf/nginx.conf
log_format combined_realip '$remote_addr $http_x_forwarded_for [$time_local]'
    ' $host "$request_uri" $status'
    ' "$http_referer" "$http_user_agent"';

说明: “combined_ realip”:日志格式名称;'$remote_ addr $http_ x_ forwarded_ for [$time_ local]' ' $host "$request_uri" $status' ' "$http_ referer" "$http_ user_ agent"' :日志内容。 注释:

名称

含义

$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配置文件中设定日志格式,然后才能在虚拟主机中进行调用(格式名称)。

代码语言:javascript
复制
[root@adailinux ~]# cd /usr/local/nginx/conf/vhost/
[root@adailinux vhost]# ls
aaa.com.conf  test.com.conf

定义test.com.conf日志格式:  
[root@adailinux vhost]# vim test.com.conf  
 ……
 access_log /tmp/test.com.log combined_realip;
    #指定日志位置及格式

检查错误:
[root@adailinux vhost]# /usr/local/nginx/sbin/nginx -t
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

注: 如果不指定日志格式,系统使用默认日志格式,记录内容较简单。

检测:

代码语言:javascript
复制
[root@adailinux vhost]# curl -x127.0.0.1:80 test.com
This is test.com
[root@adailinux vhost]# cat /tmp/test.com.log 
127.0.0.1 - [11/Aug/2017:15:09:54 +0800] test.com "/" 200 "-" "curl/7.29.0"

12.11 Nginx日志切割

因为Nginx没有自带的日志切割工具,所以需要借助系统日志切割命令或使用日志切割脚本。

日志切割脚本

为了方便管理,shell脚本统一保存位置:/usr/local/sbin/

代码语言:javascript
复制
[root@adailinux vhost]# vim /usr/local/sbin/nginx_log_rotate.sh

#! /bin/bash
d=`date -d "-1 day" +%Y%m%d` 
#定义切割时间(切割一天前的日志)
logdir="/tmp/"
#此处指定要切割的日志路径(该路径来自虚拟主机配置文件)
nginx_pid="/usr/local/nginx/logs/nginx.pid"
#调用pid的目的是执行命令:/bin/kill -HUP `cat $nginx_pid`
#该命令等价于命令:nginx -s reload(重新加载文件),确保与虚拟主机配置文件变更保持同步
#该地址来自nginx配置文件
cd $logdir
for log in `ls *.log`
do
    mv $log $log-$d
done
#此处使用通配进行循环,对所有复合条件的日志文件进行切割
/bin/kill -HUP `cat $nginx_pid`
#执行此命令进行重载生成新的日志文件来记录新的日志

执行该脚本:

代码语言:javascript
复制
[root@adailinux vhost]# sh -x /usr/local/sbin/nginx_log_rotate.sh
++ date -d '-1 day' +%Y%m%d
+ d=20170810
+ logdir=/tmp/
+ nginx_pid=/usr/local/nginx/logs/nginx.pid
+ cd /tmp/
++ ls test.com.log yum.log
+ for log in '`ls *.log`'
+ mv test.com.log test.com.log-20170810
+ for log in '`ls *.log`'
+ mv yum.log yum.log-20170810
++ cat /usr/local/nginx/logs/nginx.pid
+ /bin/kill -HUP 1251

说明: -x选项的作用是显示脚本执行过程。

注: 该脚本配合任务计划cron使用,定期进行切割和清理。

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

核心配置参数:

代码语言:javascript
复制
[root@adailinux vhost]# vim test.com.conf
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
    #匹配文件类型
    {
          expires      7d;
          #过期时间为7天
          access_log off;
          #不记录该类型文件的访问日志
    }
location ~ .*\.(js|css)$
    {
          expires      12h;
          #过期时间为12小时
          access_log off;
          #不记录该类型文件的访问日志
    }
    access_log /tmp/test.com.log combined_realip;
    #指定日志位置及格式

检测:

代码语言:javascript
复制
[root@adailinux vhost]# /usr/local/nginx/sbin/nginx -t
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
[root@adailinux vhost]# /usr/local/nginx/sbin/nginx -s reload

访问index.html:
[root@adailinux vhost]# !curl
curl -x127.0.0.1:80 test.com
This is test.com

[root@adailinux vhost]# !cat
cat /tmp/test.com.log 
127.0.0.1 - [11/Aug/2017:17:45:28 +0800] test.com "/" 200 "-" "curl/7.29.0"
即:有日志!

访问baidu.png文件:
[root@adailinux test.com]# curl -x127.0.0.1:80 test.com/baidu.png -I
HTTP/1.1 200 OK
Server: nginx/1.12.1
Date: Fri, 11 Aug 2017 09:47:57 GMT
Content-Type: image/png
Content-Length: 3706
Last-Modified: Tue, 01 Aug 2017 10:13:45 GMT
Connection: keep-alive
ETag: "59805459-e7a"
Expires: Fri, 18 Aug 2017 09:47:57 GMT
Cache-Control: max-age=604800
Accept-Ranges: bytes
说明:max-age=604800s=7天,即该文件缓存的过期时间为7天!

[root@adailinux test.com]# cat /tmp/test.com.log 
127.0.0.1 - [11/Aug/2017:17:45:28 +0800] test.com "/" 200 "-" "curl/7.29.0"
即:无该文件的访问日志!!!

(adsbygoogle = window.adsbygoogle || []).push({});

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2017/08/11 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 12.10 访问日志
    • 定义虚拟主机日志格式
    • 12.11 Nginx日志切割
      • 日志切割脚本
      • 12.12 静态文件不记录日志&过期时间
      相关产品与服务
      轻量应用服务器
      轻量应用服务器(TencentCloud Lighthouse)是新一代开箱即用、面向轻量应用场景的云服务器产品,助力中小企业和开发者便捷高效的在云端构建网站、Web应用、小程序/小游戏、游戏服、电商应用、云盘/图床和开发测试环境,相比普通云服务器更加简单易用且更贴近应用,以套餐形式整体售卖云资源并提供高带宽流量包,将热门开源软件打包实现一键构建应用,提供极简上云体验。
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档