文章目录
- 1. 文章引言
- 2. Nginx访问日志(access.log)
- 2.1 简述访问日志
- 2.2 启用Nginx访问日志
- 2.3 自定义访问日志中的格式
- 3. Nginx错误日志(error.log)
- 3.1 简述错误日志
- 3.2 启用错误日志
- 3.3 Nginx错误日志的安全级别
- 4. 文末总结
1. 文章引言
我们在实际工作中,经常使用到日志。
日志在一个系统中是非常重要的,它可以监控一个应用程序的活动,因为它们为你提供有用的调试信息,并使你能够分析一个Web服务器
的所有方面。
像其他软件应用程序一样,Nginx
也会将诸如网站访问者、遇到的问题等事件保存到日志文件中。
这些有用的记录信息被用来采取先发制人的措施,以便处理日志事件中的重大严重差异。
在Nginx
中记录事件的日志,有如下两种类型:
-
一种是访问日志:
access.log
-
一种是错误日志:
error.log
如果你安装Nginx
后,不知道Nginx
日志的存放地址,可以采用如下方式:
- 首先,使用如下命令查看
Nginx
的安装目录
[root@test ~] which nginx
/usr/local/nginx/sbin/nginx
- 其次,使用如下命令进入到
log
目录中
[root@test local] cd /usr/local/nginx
[root@test nginx] ls
conf logs sbin ...
[root@test nginx]cd ./logs
[root@test logs] ls -l
total 92540
-rw-r--r-- 1 root root 92712667 Apr 19 15:16 access.log
-rw-r--r-- 1 root root 2033057 Apr 19 15:00 error.log
-rw-r--r-- 1 root root 6 Apr 18 09:20 nginx.pid
如此,你便可以访问Nginx
日志的存放地址。
如果随着Nginx
版本的升级,Nginx
默认的访问地址不在该目录下,你可以通过如下命令查看Nginx
的配置文件:
[root@test nginx] cd /usr/local/nginx/conf
[root@test conf] cat nginx.conf
user root;
worker_processes 1;
#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;
pid /usr/local/nginx/logs/nginx.pid;
...
http {
include mime.types;
default_type application/octet-stream;
#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;
......
}
}
在配置文件中,你可以看到nginx
的access_log
和error.log
的地址,只不过注释了。
【注意】这里的地址是相对地址,相对于Nginx
安装目录的地址。
2. Nginx访问日志(access.log)
2.1 简述访问日志
所有与网站访问者有关的活动都记录在访问日志中,如下图所示:
在这种日志中,你可以看下到最近访问过如下信息:
-
请求接口、方法(
get,post...
)等 -
Nginx
是如何响应客户端请求的 -
客户端的
IP
地址 -
客户端使用的是什么浏览器
-
…
通过使用访问日志的信息,你可以监控流量,找到网站在一段时间内的使用情况。
如果你正确地监控访问日志,那么你可以很容易地发现一些由用户发送的异常请求,从而检查部署的应用程序的缺陷。
2.2 启用Nginx访问日志
您可以在服务器部分或HTTP
中使用access_log
指令启用访问日志,如下代码所示:
access_log log_file log_format ;
log_file
是强制性的,而log_format
是可选的。
如果您未提及日志格式,则将以默认的组合格式键入日志。
默认情况下,访问日志是在Nginx
配置文件中定义的。
因此,所有虚拟主机的访问日志将存储在同一配置文件中,如下代码所示:
http {
...
access_log /var/log/nginx/access.log;
...
}
建议通过记录到新的单独文件中,来分开所有虚拟主机的访问日志,如下代码所示:
http {
...
...
access_log /var/log/nginx/access.log;
server {
listen 80;
Server_name test.com
access_log /var/log/nginx/test.access.log;
...
...
}
}
重新加载新的Nginx
配置。
现在,您可以使用以下命令,在文件/var/log/nginx/test.access.log
中访问test.com域
的访问日志:
sudo tail -f /var/log/nginx/test.access.log
2.3 自定义访问日志中的格式
我们解释一个定义自定义访问日志格式的示例。
默认情况下,访问日志以组合日志格式记录。
因此,您可以使用gzip response
的值扩展预定义格式的压缩率,如下代码所示:
http {
log_format custom '$remote_addr - $remote_user [$time_local] '
'"$request" $status $body_bytes_sent '
'"$http_referer" "$http_user_agent" "$gzip_ratio"';
server {
gzip on;
...
access_log /var/log/nginx/test.access.log custom;
...
}
}
对Nginx
的配置进行所有更改后,请重新加载Nginx。
接着运行tail
命令以在事件日志的末尾显示gzip
比率,如下代码所示:
$ sudo tail -f /var/log/nginx/example.access.log
3. Nginx错误日志(error.log)
3.1 简述错误日志
如果Nginx
突然停止运行或无法正常工作,它将在错误日志中记录所有事件,如下图所示:
因此,使用错误日志,您可以找到更多详细信息。
它还记录警告,但无法识别已发生的问题。
3.2 启用错误日志
error_log
指令的以下语法:
error_log log_file log_level ;
log_file
表示日志文件路径,log_level
标识日志事件的安全级别。
我们在下面提到了一个示例,其中,在服务器上下文中的error_log
指令中执行覆盖:
http {
...
...
error_log /var/log/nginx/error_log;
server {
listen 80;
server_name example1.com;
error_log /var/log/nginx/example1.error_log warn;
...
}
server {
listen 80;
server_name test2.com;
error_log /var/log/nginx/test2.error_log debug;
...
}
}
当需要禁用错误日志时,请将日志文件的名称分配给/dev/null
,如下代码:
error_log/dev/null;
3.3 Nginx错误日志的安全级别
您可以在错误日志中使用以下安全级别:
-
emerg
:当系统不稳定时,用于紧急消息 -
alert
:生成严重问题的警报消息。 -
crit
:用于紧急情况下立即处理。 -
error
:处理页面时,可能会发生错误。 -
warn
:用于警告消息 -
notice
:您也可以忽略的通知日志。 -
info
:有关信息,消息 -
debug
:指向用于调试信息的错误位置。
4. 文末总结
Nginx
访问和错误日志对于记录某些活动非常有用。
以上就是如何在Linux
系统上启用和查看这些类型的Nginx
日志的全部内容。