标签:div 功能 本地 csdn linu for nginx服务 通知 net
一. nginx.conf中 http 加入以下配置
access_log on; log_format main ‘$remote_addr - [$time_local] ‘ ‘$upstream_addr $request_time $upstream_response_time ‘ ‘$http_host $request‘ ‘"$status" $body_bytes_sent "$http_user_agent"‘; access_log /data/nginx_log/access.log main;
$remote_addr, $http_x_forwarded_for 记录客户端IP地址
二.
nginx的日志文件没有rotate功能。编写每天生成一个日志,我们可以写一个nginx日志切割脚本来自动切割日志文件。
第一步就是重命名日志文件,不用担心重命名后nginx找不到日志文件而丢失日志。在你未重新打开原名字的日志文件前,nginx还是会向你重命名的文件写日志,Linux是靠文件描述符而不是文件名定位文件。
第二步向nginx主进程发送USR1信号。nginx主进程接到信号后会从配置文件中读取日志文件名称,重新打开日志文件(以配置文件中的日志名称命名),并以工作进程的用户作为日志文件的所有者。重新打开日志文件后,nginx主进程会关闭重名的日志文件并通知工作进程使用新打开的日志文件。工作进程立刻打开新的日志文件并关闭重名名的日志文件。然后你就可以处理旧的日志文件了。[或者重启nginx服务]。
nginx日志按每分钟自动切割脚本如下:
新建shell脚本:vi/usr/local/software/nginx/nginx_log.sh
#!/bin/bash #设置日志文件存放目录 LOG_HOME="/usr/local/software/nginx/logs/" #备分文件名称 LOG_PATH_BAK="$(date -d yesterday +%Y%m%d%H%M)".abc.access.log #重命名日志文件 mv ${LOG_HOME}/abc.access.log ${LOG_HOME}/${LOG_PATH_BAK}.log #向nginx主进程发信号重新打开日志 kill -USR1 `cat /usr/local/software/nginx/logs/nginx.pid`
每天凌晨执行以上脚本
标签:div 功能 本地 csdn linu for nginx服务 通知 net
原文地址:https://www.cnblogs.com/xiaommvik/p/10059434.html