聊聊配置 Nginx 访问与错误日志的问题

  

下面是关于“聊聊配置 Nginx 访问与错误日志的问题”的完整攻略:

一、Nginx访问日志配置说明

1. Nginx访问日志的概念

Nginx访问日志是指记录Nginx服务器接收到来自客户端的HTTP请求的日志。当我们需要追踪Nginx服务器的访问量、访问情况等信息时,可以通过查看Nginx的访问日志来了解这些情况。Nginx访问日志可以帮助我们快速定位访问问题,以及优化网站的访问速度。

2. Nginx访问日志的配置

在Nginx的配置文件中设置访问日志很简单,只需要按照下面的格式添加相应的配置即可:

http {
    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  /var/log/nginx/access.log  main;
}

上面的配置中,$remote_addr表示客户端的IP地址,$remote_user表示客户端的用户名(如果有的话),$time_local表示请求的本地时间,"$request"表示请求的URL,$status表示服务器的响应状态码,$body_bytes_sent表示发送给客户端的数据字节数,$http_referer表示来自哪个页面链接过来的,"$http_user_agent"表示客户端浏览器的信息,"$http_x_forwarded_for"表示客户端的真实IP(如果服务器使用代理的话)。

而access_log指令用于指定访问日志存储的路径和格式。例如,上面的配置表示访问日志存储在/var/log/nginx/access.log文件中,使用的格式是main。

另外,我们还可以将Nginx访问日志分类保存,例如分别存储访问错误日志和常规访问日志,具体的配置如下:

http {
    # 定义常规日志格式
    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

    # 定义错误日志格式
    log_format  error  '$time_local | $remote_addr | $request | $status | $body_bytes_sent | $http_referer | $http_user_agent';

    # 记录常规访问日志
    access_log  /var/log/nginx/access.log  main;

    # 记录错误日志
    error_log  /var/log/nginx/error.log  error;
}

上面的配置中,我们定义了两种日志格式,main用于记录常规访问日志,error用于记录错误日志,然后在访问日志和错误日志的指令中指定对应的格式。

二、Nginx错误日志配置说明

1. Nginx错误日志的概念

Nginx错误日志是指记录Nginx服务器遇到的错误、异常等问题的日志,例如客户端发送的请求格式有误、文件不存在等等。当我们遇到访问问题时,可以通过查看Nginx的错误日志来了解问题所在,以及解决它。

2. Nginx错误日志的配置

在Nginx的配置文件中设置错误日志也很简单,只需要按照下面的格式添加相应的配置即可:

http {
    error_log  /var/log/nginx/error.log  error;
}

上面的配置中,error_log指令用于指定错误日志存储的路径和级别。例如,上面的配置表示错误日志存储在/var/log/nginx/error.log文件中,使用的级别是error(即只记录错误和严重错误)。

类似于访问日志,我们也可以将Nginx错误日志分类保存,例如分别存储错误日志和警告日志,具体的配置如下:

http {
    # 记录错误日志
    error_log  /var/log/nginx/error.log  error;

    # 记录警告日志
    error_log  /var/log/nginx/warn.log   warn;
}

上面的配置中,我们定义了两个错误日志,分别用于记录错误日志和警告日志,并在指令中指定对应的级别。

示例

假设我们在Nginx服务器上部署了一个WordPress博客,并且想要记录常规访问日志和错误日志,以便分析访问情况和解决问题。那么,我们应该怎么做呢?

1. Nginx访问日志示例

我们可以按照如下步骤来配置Nginx访问日志:

  1. 打开Nginx的配置文件(通常是/etc/nginx/nginx.conf),找到http块。

  2. 在http块中按照上述格式添加访问日志的指令,例如:

```
http {
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  /var/log/nginx/access.log  main;

}
```

  1. 重新启动Nginx服务器,使配置生效。

  2. 访问WordPress博客,例如http://你的域名/,等待一段时间后再查看/var/log/nginx/access.log文件,可以看到类似下面的日志:

127.0.0.1 - - [08/Sep/2021:13:30:46 +0800] "GET / HTTP/1.1" 200 3412 "-" "Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Firefox/60.0" "-"

对于这个日志,我们可以根据格式解析出访问者的IP地址、访问时间、请求的URL、状态码、发送的数据字节数等信息。

2. Nginx错误日志示例

我们可以按照如下步骤来配置Nginx错误日志:

  1. 打开Nginx的配置文件(通常是/etc/nginx/nginx.conf),找到http块。

  2. 在http块中按照上述格式添加错误日志的指令,例如:

http {
error_log /var/log/nginx/error.log error;
}

  1. 重新启动Nginx服务器,使配置生效。

  2. 访问WordPress博客,例如http://你的域名/nonexistent.html(访问不存在的文件),等待一段时间后再查看/var/log/nginx/error.log文件,可以看到类似下面的日志:

2021/09/08 13:55:23 [error] 1234#1234: *5 open() "/usr/share/nginx/html/nonexistent.html" failed (2: No such file or directory), client: 127.0.0.1, server: , request: "GET /nonexistent.html HTTP/1.1", host: "你的域名"

对于这个日志,我们可以根据格式解析出请求的方式、请求的URL、客户端的IP地址等信息,非常有助于我们排查访问问题和优化网站的性能。

相关文章