1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40
| log_format main '$year-$month-$day-$hour:$minutes:$seconds|$request_method|$request_uri|$http_host|$server_name|$status|$request_time|$remote_addr|$http_x_forwarded_for|$http_referer|$http_user_agent';
main 表示给当前格式的命名 $year-$month-$day-$hour:$minutes:$seconds 使用自己定义的变量 $request_method 请求方法,比如GET或者POST $request_uri 请求URI $http_host 请求信息中的host $server_name 实际nginx匹配到的host(因为一个server可以有多个name,这个时候貌似输出的是第一个name,所以多个的时候可能会和$http_host不一致) $status 返回的http状态码 $request_time 请求所花费的时间 $remote_addr 正常请求中的客户端ip地址,但是如果经过反向代理,这个时候是127.0.0.1 $http_x_forwarded_for 如果经过反向代理,这个字段可以拿到原本的ip地址 $http_referer 来源地址,如果是通过其他网页来源访问到的,这里可以看到 $http_user_agent 浏览器请求头
在说明一下时间格式 nginx日志有默认两种时间格式可以选择(目前只查询到这两个) $time_local 输出格式: 01/Jul/2020:10:56:37
$time_iso8601 2020-07-01T11:16:35+08:00
但是上面两种都不是我们想要的,我们想要的是这种格式 yyyy-MM-dd HH:mm:ss 2020-07-01 11:21:00
所以需要我们对日志进行设置 nginx中的变量都是全局变量,但是只会对当前共享 所以需要在每一个server中定义出对应的变量,这样在每次日志记录的时候就可以使用这些变量了 如果觉得这种方法太麻烦,也可以使用自编译的nginx或者openresty,这样可以直接通过lua解决 这个问题,也可以在源代码中修改格式,因为我们这边是通过yum安装的,同时为了通用性,就选择这 种添加变量的方式解决
如果觉得这段代码稍微有点长,不愿意接受 那么可以单独写一个配置文件,然后使用include的方式倒入
|