Logs are very useful to monitor activities of any application apart from providing you with valuable information while you troubleshoot it. Like any other application, NGINX also records events like visitors to your site, issues it encountered and more to log files. This information enables you to take preemptive measures in case you notice some serious discrepancies in the log events. This article will guide you in details about how to configure NGINX logging so that you have a better insight into its activities.
前提条件
- 您已经安装了 NGINX 通过遵循我们的教程从 这里。
在 NGINX 中登录
默认情况下,NGINX 会将其事件写成两种类型的日志 - 错误日志和访问日志。在大多数流行的 Linux 发行版中,如 Ubuntu、CentOS 或 Debian,访问日志和错误日志都可以在 `/var/log/nginx 中找到,假设您已经在 NGINX 核心配置文件中启用了访问日志和错误日志。
什么是NGINX访问日志?
NGINX在访问日志中记录了您网站的所有访问者的活动,在这里您可以找到哪些文件被访问,NGINX如何响应请求,客户端使用的浏览器,客户端的IP地址等等。您可以使用访问日志的信息来分析流量,以便在时间内找到网站的使用情况。
什么是NGINX错误记录?
另一方面,如果NGINX遇到任何问题,那么它会将事件记录到错误日志中。如果配置文件中存在某些错误,可能会发生这种情况。因此,如果NGINX无法启动或突然停止运行,那么您应该检查错误日志以获取更多细节。
如何启用 NGINX 访问日志?
一般来说,访问日志可以通过access_log
指令在 http 或服务器部分启用。第一个参数 log_file 是强制性的,而第二个参数 log_format 是可选的。
1access_log log_file log_format;
默认情况下,访问日志在核心 NGINX 配置文件的 http 背景下被启用,这意味着所有虚拟主机的访问日志将被记录在同一个文件中。
1http {
2 ...
3 ...
4 access_log /var/log/nginx/access.log;
5 ...
6 ...
7}
总是最好将所有虚拟主机的访问日志隔开,将其记录在一个单独的文件中。
1http {
2 ...
3 ...
4 access_log /var/log/nginx/access.log;
5
6 server {
7 listen 80;
8 server_name domain1.com
9 access_log /var/log/nginx/domain1.access.log;
10 ...
11 ...
12 }
13}
若要在文件 /var/log/nginx/domain1.access.log
中查看 domain1.com 的访问日志,请在终端中使用以下尾巴命令。
1# tail -f /var/log/nginx/domain1.access.log
在 Access 日志中应用自定义格式
用于记录访问日志中的事件的默认日志格式是组合日志格式. 您可以通过创建自己的自定义日志格式来排除默认行为,然后在 access_log 指令中指定自定义日志格式的名称。
1http {
2 log_format custom '$remote_addr - $remote_user [$time_local] '
3 '"$request" $status $body_bytes_sent '
4 '"$http_referer" "$http_user_agent" "$gzip_ratio"';
5
6 server {
7 gzip on;
8 ...
9 access_log /var/log/nginx/domain1.access.log custom;
10 ...
11 }
12}
一旦您在环境中应用了上述日志格式,请重新加载 NGINX。
1# tail -f /var/log/nginx/domain1.access.log
247.29.201.179 - - [28/Feb/2019:13:17:10 +0000] "GET /?p=1 HTTP/2.0" 200 5316 "https://domain1.com/?p=1" "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.119 Safari/537.36" "2.75"
如何启用 NGINX 错误日志?
error_log
指令通过指定要记录的错误消息的最小严重程度来设置错误登录到 file 或 stderr,或 syslog。
1error_log log_file log_level;
第一个 log_file 参数定义了日志文件的路径,第二个 log_level 参数定义了要记录的日志事件的严重程度。如果您没有指定log_level,则默认情况下,仅记录了具有严重程度的日志事件。
1http {
2 ...
3 error_log /var/log/nginx/error_log crit;
4 ...
5}
还可以单独记录所有虚拟主机的错误日志,将 error_log 指令置于服务器环境中。
1http {
2 ...
3 ...
4 error_log /var/log/nginx/error_log;
5 server {
6 listen 80;
7 server_name domain1.com;
8 error_log /var/log/nginx/domain1.error_log warn;
9 ...
10 }
11 server {
12 listen 80;
13 server_name domain2.com;
14 error_log /var/log/nginx/domain2.error_log debug;
15 ...
16 }
17}
上面描述的所有示例都记录到文件中的日志事件. 您还可以配置 error_log 指令以将日志事件发送到 syslog 服务器. 下面的 error_log 指令将错误日志发送到 192.168.10.11 的 IP 地址的 syslog 服务器。
1error_log syslog:server=192.168.10.11 debug;
在某些情况下,您可能想要禁用错误日志. 要做到这一点,将日志文件名设置为 `/dev/null。
1error_log /dev/null;
Nginx 错误日志重度级别
有许多类型的日志级别与日志事件有关,并且具有不同的优先级别。下方列出了所有日志级别。在下列日志级别中,调试具有顶级优先级,还包括其他级别。
- emerg:当您的系统可能不稳定时的紧急消息
- alert:严重问题的警报信息
- crit:需要立即处理的关键问题
- error:发生了错误。在处理页面时发生了错误
- warn:您应该查看的警告消息
- 注意:您可以忽视的简单日志通知
- info:您可能想要知道的信息。
摘要
NGINX 中的访问日志和错误日志不仅会保留用户活动的标签,还会节省您在调试过程中的时间和精力。此外,如果您需要更多信息,您还可以自定义访问日志。