关
注
我
们
Nginx日志详解
1
前言
此前介绍了Apache服务器的访问及错误日志的查看与常规分析,本篇将介绍Nginx日志及其相关配置。
2
Nginx日志介绍
Nginx日志其主要作用是查看系统运行记录和出错说明,了解系统运行的状态。其日志分为两种:access_log(访问日志)、error_log(错误日志)。
access_log(访问日志):主要记录客户端向Nginx服务器所有的发起请求,包括:客户端IP、浏览器信息、referer、请求处理时间、URL请求等。
error_log(错误日志):主要记录处理请求过程的错误信息,包括:错误发生时间、严重性、错误解释等。
3
Nginx日志配置
一般情况 ,Nginx的access.log和error.log相关配置在Nginx的nginx.conf配置文件中进行。nginx.conf用于配置在nginx运行时加载模块运行时所依赖的配置项,包括守护进程配置、工作方式配置、日志配置、加载自定义配置文件配置等,此次仅谈论access.log和error.log日志的相关配置。
无论是window还是Linux下,nginx.conf的默认存储路径都为/nginx安装路径/conf/nginx.conf。
存放路径配置
1、通过命令配置
nginx中要配置访问日志文件access.log的路径可以通过“access_log ”指令进行。
语法:access_log <日志文件>
#配置access_log路径access_log /www/wwwlogs/access.log
该例子指定日志的写入路径为/www/wwwlogs/,日志格式使用默认的combined(具体参数见下述格式配置)。
同样,配置错误日志文件error.log的路径也有自己的调试指令:error_log。
语法:error_log <日志文件> <错误日志级别>;
#配置error.log路径error_log /www/wwwlogs/nginx-error.log error
该例子指定日志的写入位置为/www/wwwlogs日志级别使用默认的error。
error_log 级别分为 debug, info, notice, warn, error, crit 默认为crit。crit 记录内容最少,degug记录内容最多,比如502比较频繁出现,但是看默认的error_log并没有看到有意义的信息,当调成error级别时,错误日志记录的内容会更加丰富。
2、在nginx.conf直接输入
直接在nginx.conf文件中编辑写入路径。


格式配置
1、access.log格式配置
Nginx预定义了combined日志格式,如果没有明确指定日志默认使用该格式:
log_format combined '$remote_addr - $remote_user [$time_local] ''"$request" $status $body_bytes_sent ''"$http_referer" "$http_user_agent"';
如果不想使用Nginx预定义的格式,可以通过一个关键参数来实现自定义:log_format。
语法:
log_format name [escape=default|json] string ...;
.name 格式名称。在access_log指令中引用。
.escape 设置变量中的字符编码方式是json还是default,默认是default。
.string 要定义的日志格式内容。该参数可以有多个。参数中可以使用Nginx变量。
log_format main '$remote_addr - $remote_user [$time_local] "$request" ''$status $body_bytes_sent "$http_referer" ''"$http_user_agent" "$http_x_forwarded_for"';
该例子指定内容有客户端ip,客户端用户名称、本地时间、原始请求行等

下面是定义Nginx访问日志格式常用到的一些参数:

2、error.log格式配置
错误日志主要记录客户端访问nginx出错时的日志,格式不支持自定义。
4
日志分析实例
系统环境:Linux CentoOS 7
宝塔安装:bt 5.9.1
1、找到nginx.conf文件路径
find / -name nginx.conf

2、根据路径查看该文件,找到access_log、error_log日志文件存放路径:
vi /www/servers/Nginx/conf/nginx.conf
从而找到服务器的access_log、error_log日志存放位置:
/www/wwwlogs/nginx_error_log
/www/wwwlogs/access.log

3查看access.log

192.168.x.x - - [12/Jun/2019:16:54:47 +0800] "POST /phpmyadmin_b7d094da9da573b5/index.php HTTP/1.1" 302 36 "http://XX:8888/database" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.102 Safari/537.36"

4、查看nginx_error.log

2021/04/28 08:42:44 [emerg] 1682#0: bind() to 0.0.0.0:888 failed (98: Address already in use)

以上便是Nginx日志一些相关介绍,通过认识日志目录和日志配置的字段和格式,方便我们查询相关数据。

扫码 关注




