如何在服务器中配置Nginx的访问日志文件
Nginx是一个开源的高性能HTTP和反向代理服务器,负责处理Internet上一些最大站点的负载。在管理NGINX Web服务器时,您将执行的最常见任务之一是检查日志文件。
每当处理客户请求时,Nginx都会在访问日志中生成一个新事件。每个事件记录都包含一个时间戳,并包含有关客户端和所请求资源的各种信息。访问日志可以向您显示访问者的位置,访问者访问的页面,他们在页面上花费的时间等等。
该log_format指令允许您定义记录消息的格式。该access_log指令启用并设置日志文件的位置和使用的格式。
该access_log指令的最基本语法如下:
access_log log_file log_format;
其中log_file是日志文件的完整路径,是日志文件log_format使用的格式。
访问日志可以在被启用http,server或location指令块。
默认情况下,访问日志在httpNginx主配置文件中的指令中全局启用。
/etc/nginx/nginx.conf
http {
...
access_log /var/log/nginx/access.log;
...
}
为了提高可读性,建议为每个服务器块设置一个单独的访问日志文件。在access_log该指令集server指令覆盖在所述一个组http(高层)指令。
/etc/nginx/conf.d/domain.com.conf
http {
...
access_log /var/log/nginx/access.log;
...
server {
server_name domain.com
access_log /var/log/nginx/domain.access.log;
...
}
}
如果未指定日志格式,Nginx将使用如下所示的预定义组合格式:
log_format combined '$remote_addr - $remote_user [$time_local] '
'"$request" $status $body_bytes_sent '
'"$http_referer" "$http_user_agent"';
要更改日志记录格式,请覆盖默认设置或定义一个新设置。例如,定义一个名为custom的新日志记录格式,它将使用显示标题的值扩展组合格式,X-Forwarded-For在httpor server指令中添加以下定义:
log_format custom '$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 custom;
虽然访问日志提供了非常有用的信息,但它占用了磁盘空间,并可能影响服务器性能。如果服务器资源不足,并且网站繁忙,则可能要禁用访问日志。为此,请将access_log伪指令的值设置为off:
access_log off;