0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

配置Nginx访问日志

马哥Linux运维 来源:入门小站 作者:入门小站 2022-05-24 09:59 次阅读

Nginx是一个开放源代码的高性能HTTP和反向代理服务器,负责处理Internet上某些最大站点的负载。在管理NGINX网络服务器时,你要执行的最常见任务之一就是检查日志文件。

在对服务器或应用程序问题进行故障排除时,知道如何配置和读取日志非常有用,因为它们提供了详细的调试信息

Nginx用两种类型的日志记录其事件:访问日志和错误日志。访问日志记录有关客户端请求的信息,错误日志记录有关服务器和应用程序问题的信息。

教程概述了如何配置和读取Nginx访问和错误日志。配置Nginx访问日志的格式与位置,配置错误日志格式与位置,默认的日志文件所在位置,读取和理解Nginx日志文件每个字段。

配置Nginx访问日志

每当处理客户请求时,Nginx都会在访问日志中生成一个新记录。每个事件记录都包含一个时间戳,并包含有关客户端和所请求资源的各种信息。访问日志可以显示访问者的位置,访问者的访问的页面等。

log_format指令允许你定义记录日志的格式。access_log指令启用并设置日志文件的位置和使用的格式。

access_log指令的最基本语法如下:


	

access_loglog_filelog_format;

其中log_file是日志文件的完整路径,log_format是日志文件使用的格式。可以在httpserverlocation指令的上下文中启用访问日志。

默认情况下,Nginx主配置文件中的http指令配置了全局访问日志格式。


	

http{ ... access_log/var/log/nginx/access.log; ... }

/etc/nginx/nginx.conf

为获得更好的可维护性,建议为每个服务器设置一个单独的访问日志文件。在server指令中设置的access_log指令将覆盖在http指令中设置的access_log


	

http{ ... access_log/var/log/nginx/access.log; ... server{ server_namedomain.com access_log/var/log/nginx/domain.access.log; ... } }

/etc/nginx/conf.d/domain.com.conf

如果未指定日志格式,Nginx将使用预定义的combined组合格式,如下所示:


	

log_formatcombined'$remote_addr-$remote_user[$time_local]' '"$request"$status$body_bytes_sent' '"$http_referer""$http_user_agent"';

要更改日志记录格式,请覆盖默认设置或定义一个新设置。例如,定义一个名为main的新日志记录格式,它将用添加X-Forwarded-Forheader的值来扩展combined格式,在httpserver中添加以下定义指令:


	

log_formatcustom'$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.logcustom;

虽然访问日志提供了非常有用的信息。但它会占用磁盘空间,并可能影响服务器性能。如果服务器资源不足,并且网站繁忙,则可能要禁用访问日志。为此,请将access_log伪指令的值设置为off。理论上你不会出现这种情况,Nginx会自动删除前期的日志文件:

access_log off;

配置错误日志

Nginx将应用程序和常规服务器错误的消息写入错误日志文件。如果你在Web应用程序中遇到错误,则错误日志是你开始进行排查问题的第一个位置。error_log指令启用并设置错误日志的位置和严重性级别。它采用以下格式,可以在httpserverlocation上下文中进行设置:

	
		error_loglog_filelog_levellog_level参数设置日志记录级别。以下是按严重性从低到高列出的级别:
  • debug-调试消息。
  • info-信息性消息。
  • notice-公告。
  • warn- 警告。
  • error-处理请求时出错。
  • crit-关键问题。需要立即采取行动。
  • alert-警报。必须立即采取行动。
  • emerg- 紧急情况。系统处于无法使用的状态。
每个日志级别包括更高级别。例如,如果你将日志级别设置为warn,则Nginx还将记录errorcritalertemerg消息。未指定log_level参数时,默认为error。 默认情况下,error_log指令在主nginx.conf文件内的http指令上下文中定义:

	
		http{ ... error_log/var/log/nginx/error.log; ... }
		/etc/nginx/nginx.conf
		与访问日志相同,建议为每个服务器设置一个单独的错误日志文件,该文件将覆盖更高级别的设置如http指令上下文。
		例如,要将domain.com的错误日志设置为warn,你可以使用:

	
		http{ ... error_log/var/log/nginx/error.log; ... server{ server_namedomain.com error_log/var/log/nginx/domain.error.logwarn; ... } }
		无论何时修改配置文件,都必须重新加载Nginx服务,以使更改生效。

日志文件的位置

在大多数Linux发行版中,例如Ubuntu ,CentOS和Debian。默认情况下,访问和错误日志位于/var/log/nginx目录中。

读取和理解Nginx日志文件

你可以使用catlessgrepcutawk等命令打开和解析nginx日志文件。以下是使用默认的Nginx日志格式的访问日志文件的记录:

	
		192.168.33.1--[15/Oct/201941:46+0000]"GET/HTTP/1"200396"-""Mozilla/0(X11;Linuxx86_64)AppleWebKit/536(KHTML,likeGecko)Chrome/38120Safari/536"
		让我们细分Nginx日志文件记录的每个字段意味着什么:
  • $remote_addr-192.168.33.1-发出请求的客户端的IP地址。
  • $remote_user---HTTP身份验证用户。未设置用户名时,此字段显示-
  • [$time_local]-[15/Oct/201941:46 +0000]
本地服务器时间。
  • "$request"-"GET / HTTP/1.1"-请求类型,路径和协议。
  • $status-200-服务器响应代码。
  • $body_bytes_sent-396-服务器响应的大小(以字节为单位)。
  • "$http_referer"-"-"-引荐网址。
  • "$http_user_agent"-Mozilla/5.0 ...-客户端的用户代理(网络浏览器)。
使用tail命令实时观看日志文件记录:tail -f access.log

审核编辑 :李倩


声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 服务器
    +关注

    关注

    12

    文章

    8103

    浏览量

    82485
  • 源代码
    +关注

    关注

    94

    文章

    2925

    浏览量

    66056
  • nginx
    +关注

    关注

    0

    文章

    135

    浏览量

    11984

原文标题:配置 Nginx 访问与错误日志

文章出处:【微信号:magedu-Linux,微信公众号:马哥Linux运维】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    什么是Apache日志?Apache日志分析工具介绍

    Apache Web 服务器在企业中广泛用于托管其网站和 Web 应用程序,Apache 服务器生成的原始日志提供有关 Apache 服务器托管的网站如何处理用户请求以及访问您的网站时经常遇到的错误的重要信息。
    的头像 发表于 01-04 10:09 235次阅读

    聊聊日志即数据库

    《数据库故障恢复机制的前世今生》[1]一文中介绍过,由于磁盘的的顺序访问性能远好于随机访问,数据库设计中通常都会采用WAL的方式,将随机访问的数据库请求转换为顺序的日志IO,并通过Bu
    的头像 发表于 12-06 09:30 251次阅读
    聊聊<b class='flag-5'>日志</b>即数据库

    如何通过Nginx实现禁止国外IP访问网站

    最近不少小伙伴反馈自己维护的项目中,经常在后台可以看到来自国外IP的攻击,令人头疼。今天浩道跟大家分享如何通过Nginx来实现禁止国外IP访问网站,确保你网站免遭国外IP攻击了!
    的头像 发表于 12-01 11:12 698次阅读
    如何通过<b class='flag-5'>Nginx</b>实现禁止国外IP<b class='flag-5'>访问</b>网站

    Nginx配置文件如何设置头信息保留真实IP不丢失

    Nginx 配置中设置头信息以保留客户端的真实 IP 地址通常是在使用反向代理的场景中需要的。当 Nginx 作为反向代理时,客户端的真实 IP 地址可能会在转发请求时丢失,因为到达应用服务器
    的头像 发表于 11-30 10:54 897次阅读

    nginx使用学习之正、反向代理

    ,则需要通过代理服务器来访问,这种代理服务就称为正向代理。 简单一点:通过代理服务器来访问服务器的过程 就叫 正向代理。 需要在客户端配置代理服务器进行指定网站访问 反向代理 反向代理
    的头像 发表于 11-13 10:54 237次阅读
    <b class='flag-5'>nginx</b>使用学习之正、反向代理

    Nginx 如何实现高性能低消耗

    Nginx具有丰富的模块库、灵活的配置、较低资源消耗等优点。下面,我们一起深入看一下Nginx的工作机制 1. Nginx 如何实现高性能低消耗的呢? 我们从以下几个方面说明以下:
    的头像 发表于 11-11 11:31 343次阅读
    <b class='flag-5'>Nginx</b> 如何实现高性能低消耗

    Nginx目录结构有哪些

    有很多,例如:新浪、网易、 腾讯等。 为什么要用Nginx? 跨平台、配置简单、方向代理、高并发连接:处理2-3万并发连接数,官方监测能支持5万并发,内存消耗小:开启10个nginx才占150M内存 ,
    的头像 发表于 11-11 11:27 368次阅读
    <b class='flag-5'>Nginx</b>目录结构有哪些

    如何通过阿里云日志服务搭建一套通过Python上传日志的监控服务

    时间,因此如果能使用市面上现成的系统会很方便。 本文将教你如何通过阿里云日志服务搭建一套通过Python上传日志配置日志告警的监控服务。 1.准备 开始之前,你要确保Python和p
    的头像 发表于 10-21 14:43 417次阅读
    如何通过阿里云<b class='flag-5'>日志</b>服务搭建一套通过Python上传<b class='flag-5'>日志</b>的监控服务

    Nginx常用配置与命令

    对于前端来说 Node.js 并不陌生, Nginx 和 Node.js 的很多理念类似, HTTP 服务器、事件驱动、异步非阻塞等,且 Nginx 的大部分功能使用 Node.js 也可以实现,但 Nginx 和 Node.j
    发表于 10-18 10:04 158次阅读
    <b class='flag-5'>Nginx</b>常用<b class='flag-5'>配置</b>与命令

    Nginx的特点和作用 Nginx常用命令和核心配置

    热更新。性能是 Nginx 最重要的考量,其占用内存少、并发能力强、能支持高达 5w 个并发连接数,最重要的是, Nginx 是免费的并可以商业化,配置使用也比较简单。
    的头像 发表于 09-01 09:53 359次阅读
    <b class='flag-5'>Nginx</b>的特点和作用 <b class='flag-5'>Nginx</b>常用命令和核心<b class='flag-5'>配置</b>

    搭建Keepalived+Lvs+Nginx高可用集群负载均衡

      一、Nginx安装 二、配置反向代理 三、配置负载均衡 四、upstream指令参数 五、配置ssl证书提供https访问 六、
    的头像 发表于 06-25 15:39 1802次阅读
    搭建Keepalived+Lvs+<b class='flag-5'>Nginx</b>高可用集群负载均衡

    Nginx日志分割方案

    nginx 默认没有提供对日志文件的分割功能,所以随着时间的增长,access.log 和 error.log 文件会越来越大,尤其是 access.log,其日志记录量比较大,更容易增长文件大小。影响
    发表于 06-19 15:05 272次阅读
    <b class='flag-5'>Nginx</b><b class='flag-5'>日志</b>分割方案

    怎么使用Go重构流式日志网关呢?

    流式日志网关的主要功能是提供 HTTP 接口,接收 CDN 边缘节点上报的各类日志访问日志/报错日志/计费
    的头像 发表于 06-18 10:42 389次阅读
    怎么使用Go重构流式<b class='flag-5'>日志</b>网关呢?

    Nginx 可视化管理平台操作流程

    nginx-proxy-manager 是一个反向代理管理系统,它基于 NGINX,具有漂亮干净的 Web UI。还可以获得受信任的 SSL 证书,并通过单独的配置、自定义和入侵保护来管理多个代理。它是开源的,斩获 11.8K
    的头像 发表于 05-18 09:50 463次阅读
    <b class='flag-5'>Nginx</b> 可视化管理平台操作流程

    Nginx常用的配置和基本功能讲解

    Nginx 已经广泛应用于 J-one 和 Jdos 的环境部署上,本文对 Nginx 的常用的配置和基本功能进行讲解,适合 Nginx 入门学习。
    的头像 发表于 05-04 10:25 407次阅读