Nginx日志格式设置

Posted

tags:

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

参考技术A 一、日志格式设置

除了默认的main格式,可以自定义其他格式的日志

1、默认的日志格式: main

log_format main '$remote_addr - $remote_user [$time_local] "$request" '

'$status $body_bytes_sent "$http_referer" '

'"$http_user_agent" "$http_x_forwarded_for"';

默认的main日志格式,记录这么几项

远程IP- 远程用户/用户时间 请求方法(如GET/POST) 请求体body长度 referer来源信息

http-user-agent用户代理/蜘蛛 ,被转发的请求的原始IP

http_x_forwarded_for:在经过代理时,代理把你的本来IP加在此头信息中,传输你的原始IP

log_format mylog '$remote_addr- "$request" '

'$status $body_bytes_sent "$http_referer" '

'"$http_user_agent" "$http_x_forwarded_for"';

在下面的server/location,我们就可以引用 mylog

nginx允许针对不同的server做不同的Log

access_log logs/access_8080.log mylog;

二、日志分割脚本:

#!/bin/bash

base_path='/usr/local/nginx/logs'

log_path=$(date -d yesterday +"%Y%m")

day=$(date -d yesterday +"%d")

mkdir -p $base_path/$log_path

mv $base_path/access.log $base_path/$log_path/access_$day.log

#echo $base_path/$log_path/access_$day.log

kill -USR1 `cat /usr/local/nginx/logs/nginx.pid`

nginx_access_log的格式设置

 

 log_format    <NAME>    <Strin­­­g>;

    关键字         格式标签   日志格式

 
    关键字:其中关键字error_log不能改变

    格式标签:格式标签是给一套日志格式设置一个独特的名字

    日志格式:给日志设置格式
log_format  main  $remote_addr - $remote_user [$time_local] "$request" 

                               $status $body_bytes_sent "$http_referer" 

                               "$http_user_agent" "$http_x_forwarded_for";

 

    access_log  logs/access.log  main;

 

 

变量说明
$time_local 通用日志格式下的本地时间;(服务器时间)
$remote_addr 客户端(用户)IP地址
$status 请求状态码,如200,404,301,302等
$body_bytes_sent 发送给客户端的字节数,不包括响应头的大小
$bytes_sent 发送给客户端的总字节数
$request_length 请求的长度(包括请求行,请求头和请求正文)
$request_time 请求处理时间,单位为秒,小数的形式
$upstream_addr 集群轮询地址
$upstream_response_time 指从Nginx向后端(php-cgi)建立连接开始到接受完数据然后关闭连接为止的时间
$remote_user 用来记录客户端用户名称
$request 请求方式(GET或者POST等)+URL(包含$request_method,$host,$request_uri)
$http_user_agent 用户浏览器标识
$http_host 请求的url地址(目标url地址)的host
$host 等同于$http_host
$http_referer 来源页面,即从哪个页面转到本页,如果直接在浏览器输入网址来访问,则referer为空
$uri 请求中的当前URI(不带请求参数,参数位于$args),不同于浏览器传递的$request_uri的值,它可以通过内部重定向,或者使用index指令进行修改。
$document_uri 等同于$uri
$request_uri 比$uri多了参数,即$uri+$args
$http_x_forwarded_for 如果使用了代理,这个参数会记录代理服务器的ip和客户端的ip

以上是关于Nginx日志格式设置的主要内容,如果未能解决你的问题,请参考以下文章

nginx自定义日志格式

Nginx服务器log_format设置更详细的日志格式

Nginx日志分析和参数详解

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

nginx_access_log的格式设置

nginx的日志设置详解