nginx日志的配置及切割

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了nginx日志的配置及切割相关的知识,希望对你有一定的参考价值。

参考技术A nginx的log_format可以自主选择参数用于指示服务器的活动状态,默认的是:

假设将nginx服务器作为web服务器,位于负载均衡设备,nginx反向代理之后,不能获取到客户端的真实ip地址了。

原因是进过反向代理后,由于在客户端和web服务器之间增加了中间层,因此web服务器无法直接拿到客户端的ip。通过$remote_addr变量拿到的将是反向代理服务器的ip地址,但是,反向代理服务器在转发请求的http头信息中,可以增加X-Forwarded-For信息,用以记录原有的客户端ip地址和原来客户端请求的服务器地址。

语法:access_log path [format [buffer=size [flush=time]]];

配置段:

gzip压缩等级

buffer设置内存缓存区大小

flush保存在缓存去中的最长时间

不记录日志:access_log off;

使用默认combined格式记录日志:access_log logs/access.log 或access_log logs/access.log combined;

注意:nginx进程设置的用户和组必须对日志路径有创建文件的权限,否则报错。

此外,对于每一条日志记录,都将是先打来文件,再写入日志,然后关闭,可以使用open_log_file_cache来设置日志文件缓存(默认是off)。

系统自动切割,利用linux操作系统的定时任务,执行sh脚本,来完成日志的自动切割。

Nginx访问日志日志切割及静态文件不记录日志和过期时间的配置

一、Nginx访问日志
日志格式
vim /usr/local/nginx/conf/nginx.conf //搜索log_format

技术分享图片除了在主配置文件nginx.conf里定义日志格式外,还需要在虚拟主机配置文件中增加
access_log /tmp/1.log combined_realip;
这里的combined_realip就是在nginx.conf中定义的日志格式名字
-t && -s reload
curl -x127.0.0.1:80 test.com -I
cat /tmp/1.log

二、Nginx日志切割
自定义shell 脚本
vim /usr/local/sbin/nginx_log_rotate.sh//写入如下内容
#! /bin/bash
假设nginx的日志存放路径为/data/logs/
d=date -d "-1 day" +%Y%m%d
logdir="/data/logs"
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
任务计划
0 0 * /bin/bash /usr/local/sbin/nginx_log_rotate.sh

三、静态文件不记录日志和过期时间
配置如下
location ~ ..(gif|jpg|jpeg|png|bmp|swf)$
{
expires 7d;
access_log off;
}
location ~ .
.(js|css)$
{
expires 12h;
access_log off;
}

以上是关于nginx日志的配置及切割的主要内容,如果未能解决你的问题,请参考以下文章

Nginx命令行及演示:重载热部署日志切割

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

nginxnginx日志配置及日志切割

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

nginx 日志切割

10.Nginx配置文件与日志切割