天天看点

Nginx访问日志、日志切割、静态文件管理12.10 访问日志12.11 Nginx日志切割12.12 静态文件不记录日志&过期时间

12.10 访问日志

Nginx日志格式:

[root@centos-01linux ~]# 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_useragent"';

说明:

“combined realip”:日志格式名称;'$remote addr $http x forwarded for [$time_ local]' ' $host "$requesturi" $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配置文件中设定日志格式,然后才能在虚拟主机中进行调用(格式名称)。

[root@centos-01linux ~]# cd /usr/local/nginx/conf/vhost/

[root@centos-01linux vhost]# ls

aaa.com.conf test.com.conf

定义test.com.conf日志格式:

[root@centos-01linux vhost]# vim test.com.conf

……

access_log /tmp/test.com.log combined_realip;

#指定日志位置及格式

检查错误:

[root@centos-01linux 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@centos-01linux vhost]# curl -x127.0.0.1:80 test.com

This is test.com

[root@centos-01linux vhost]# cat /tmp/test.com.log

127.0.0.1 - [30/Mar/2018:09:28:10 +0800] test.com "/" 200 "-" "curl/7.29.0"

12.11 Nginx日志切割

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

日志切割脚本

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

[root@centos-01linux 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

#执行此命令进行重载生成新的日志文件来记录新的日志

执行该脚本:

[root@centos-01linux vhost]# sh -x /usr/local/sbin/nginx_log_rotate.sh

++ date -d '-1 day' +%Y%m%d

  • d=20180329
  • logdir=/tmp/
  • nginx_pid=/usr/local/nginx/logs/nginx.pid
  • cd /tmp/

    ++ ls test.com.log

  • for log in '

    ls *.log

    '
  • mv test.com.log test.com.log-20180329

    ++ cat /usr/local/nginx/logs/nginx.pid

  • /bin/kill -HUP 50929

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

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

0 0 * /bin/bash /usr/local/sbin/nginx_log_rotate.sh

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

核心配置参数:

[root@centos-01linux vhost]# vim test.com.conf

location ~ ..(gif|jpg|jpeg|png|bmp|swf)$

#匹配文件类型

{

expires 7d;

#过期时间为7天

access_log off;

#不记录该类型文件的访问日志

}

location ~ ..(js|css)$

expires 12h;

#过期时间为12小时

[root@centos-01linux vhost]# /usr/local/nginx/sbin/nginx -s reload

访问index.html:

[root@centos-01linux vhost]# !curl

curl -x127.0.0.1:80 test.com

继续阅读