一、问题描述
Nginx默认的访问日志是不会区分哪个网站有哪些日志的,全部糅杂在一起;如果需要哪个网站有哪些访问日志记录,还需要将访问日志下载下来后筛选,比较麻烦;希望将每个网站对应的日志能够单独记录到对应的日志文件里面,方便排查和管理。
# 进入Nginx默认的日志文件路径
cd /var/log/nginx/
# 查看Nginx默认的访问日志内容
cat -n access.log
二、问题分析
1、Nginx默认的访问日志不会区分各个网站的日志,全部糅杂在一起,比较混乱;
2、希望将每个网站对应的日志能够单独记录到对应的日志文件里面,方便排查和管理。
根据分析出的的问题其实就是需要将Nginx上对应的各个网站的访问日志分别存储在各自的文件里面就行。
三、实现方法
说明: ngx_http_log_module 是用来定义请求日志格式的模块,Nginx默认是包含该模块的;nginx的日志格式通过 log_format命令来定义。
3.1、Nginx的log_format日志变量详解
序号 | ngin日志配置变量 | 说明 |
1 | $time_local | 请求时nginx本机服务器的时间(示例:13/Jul/2024:20:42:43 +0800)是Nginx通用日志格式 |
2 | $time_iso8601 | ISO8601标准格式下的本地时间(示例:2024-07-14T23:43:27+08:00) |
3 | $remote_user | 客户端请求Nginx认证的用户名,没有认证的话默认是“-” |
4 | $remote_addr | 发起请求的客户端ip地址 |
5 | $request | 客户端发起请求的 URL 和 HTTP |