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

审核编辑 :李倩


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

    关注

    14

    文章

    10426

    浏览量

    91835
  • 源代码
    +关注

    关注

    96

    文章

    2953

    浏览量

    70825
  • nginx
    +关注

    关注

    0

    文章

    200

    浏览量

    13239

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

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

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    Nginx典型配置错误复盘与优化

    Nginx 是互联网生产环境中使用最广泛的反向代理和 Web 服务器之一。不管是做静态资源服务、API 网关,还是负载均衡器,Nginx 几乎是标准配置。很多运维工程师日常和它打交道,但真正能把
    的头像 发表于 05-12 09:40 339次阅读

    Nginx日志分析命令实践和常见问题排查思路

    日常运维工作中,日志分析是排查问题最直接的手段。Nginx 作为入口层代理,几乎所有请求都要经过它。当网站出现响应慢、500 错误、502 网关超时、限流失效等问题时,第一反应应该是查 Nginx
    的头像 发表于 04-15 14:12 305次阅读

    Nginx的限流机制深度解析

    很多运维工程师对 Nginx 的认知停留在"反向代理"和"负载均衡",但实际上 Nginx 在安全防护方面也相当强大——限流可以防止 CC 攻击和 API 滥用,黑白名单可以精准控制访问来源,基础安全
    的头像 发表于 04-10 16:40 765次阅读

    Nginx中Master与Worker进程的工作机制

    Nginx是现代互联网架构中最常用的Web服务器和反向代理软件。很多运维工程师使用Nginx多年,却对其核心架构一知半解,配置优化时只会机械地调整几个参数。本文从Nginx进程模型出发
    的头像 发表于 04-08 14:21 195次阅读

    Nginx高性能配置详细步骤

    Nginx 1.26.x 是当前 mainline 分支的最新稳定线,在 HTTP/3 支持、动态模块加载和内存管理上相比 1.24.x 有明显改进。1.24.x 已进入维护模式,新项目直接选 1.26.x,旧项目建议在下次维护窗口升级。
    的头像 发表于 03-04 15:35 506次阅读

    Ingress Nginx性能调优配置方案

    Ingress Nginx 是 Kubernetes 集群中最主流的流量入口组件,承担着集群内所有 HTTP/HTTPS 流量的路由和转发。默认配置能应付开发测试环境,但一到生产环境扛高并发,各种
    的头像 发表于 02-24 11:50 360次阅读

    Nginx Gzip压缩配置指南

    说起Gzip压缩,可能很多人觉得这是个老生常谈的话题。但我在这几年的运维工作中发现,真正把Gzip配置到位的网站其实不多。去年帮一个客户做性能优化,他们的网站日均带宽消耗在2TB左右,一看Nginx
    的头像 发表于 01-30 16:03 600次阅读

    Nginx反向代理和负载均衡配置实战

    负载均衡则是反向代理的进阶玩法。当一台后端服务器扛不住流量的时候,就需要多台服务器一起分担压力。Nginx负责把请求分发到不同的服务器上,这就是负载均衡。
    的头像 发表于 01-23 13:44 1059次阅读

    如何确保电能质量在线监测装置的用户操作日志审计功能的安全性?

    确保电能质量在线监测装置用户操作日志审计功能的安全性,核心是构建 “日志全生命周期安全防护体系” ,覆盖 “日志生成→存储→访问→传输→备份→销毁” 全流程,同时结合技术防护、权限管控
    的头像 发表于 12-11 16:49 1484次阅读
    如何确保电能质量在线监测装置的用户操作<b class='flag-5'>日志</b>审计功能的安全性?

    Nginx常见故障案例总结

    在互联网公司的运维生涯中,Nginx故障可以说是最常见也最让人头疼的问题之一。从简单的配置错误到复杂的性能瓶颈,从偶发的502到持续的高延迟,每一个故障背后都有其独特的原因和解决方案。
    的头像 发表于 09-18 14:51 1583次阅读

    Nginx限流与防爬虫配置方案

    在互联网业务快速发展的今天,网站面临着各种流量冲击和恶意爬虫的威胁。作为运维工程师,我们需要在保证正常用户访问的同时,有效防范恶意流量和爬虫攻击。本文将深入探讨基于Nginx的限流与防爬虫解决方案,从原理到实践,为大家提供一套完整的防护体系。
    的头像 发表于 09-09 15:52 1145次阅读

    Nginx高并发优化方案

    作为一名在生产环境中摸爬滚打多年的运维工程师,我见过太多因为Nginx配置不当导致的性能瓶颈。今天分享一套完整的Nginx高并发优化方案,帮助你的系统从10万QPS突破到百万级别。
    的头像 发表于 08-13 15:51 1313次阅读

    Nginx配置终极指南

    更新。性能是 Nginx 最重要的考量,其占用内存少、并发能力强、能支持高达 5w 个并发连接数,最重要的是, Nginx 是免费的并可以商业化,配置使用也比较简单。
    的头像 发表于 06-18 15:56 1273次阅读
    <b class='flag-5'>Nginx</b><b class='flag-5'>配置</b>终极指南

    Nginx性能优化终极指南

    而worker 进程数默认为 1 。单进程最大连接数为1024。如下图(打开Nginx目录下的/conf/nginx.conf 文档),现在我们来对这两个数值进行调优
    的头像 发表于 06-16 13:44 1623次阅读
    <b class='flag-5'>Nginx</b>性能优化终极指南

    Nginx基础安装与配置教程

    说起Web服务器,大家第一反应可能是Apache,但作为一个在运维路上摸爬滚打的技术人,我必须要为Nginx正名一下!这个由俄罗斯大神Igor Sysoev开发的轻量级HTTP服务器,真的是我见过最"能打"的Web服务器之一。
    的头像 发表于 06-13 16:13 1106次阅读