一文详细介绍查看和启用nginx日志(access.log和error.log),nginx错误日志的安全级别,自定义访问日志中的格式

news2024/11/14 15:13:44

文章目录

  • 1. 文章引言
  • 2. Nginx访问日志(access.log)
    • 2.1 简述访问日志
    • 2.2 启用Nginx访问日志
    • 2.3 自定义访问日志中的格式
  • 3. Nginx错误日志(error.log)
    • 3.1 简述错误日志
    • 3.2 启用错误日志
    • 3.3 Nginx错误日志的安全级别
  • 4. 文末总结

1. 文章引言


我们在实际工作中,经常使用到日志。

日志在一个系统中是非常重要的,它可以监控一个应用程序的活动,因为它们为你提供有用的调试信息,并使你能够分析一个Web服务器的所有方面。

像其他软件应用程序一样,Nginx也会将诸如网站访问者、遇到的问题等事件保存到日志文件中。

这些有用的记录信息被用来采取先发制人的措施,以便处理日志事件中的重大严重差异。

Nginx中记录事件的日志,有如下两种类型:

  1. 一种是访问日志:access.log

  2. 一种是错误日志:error.log

在这里插入图片描述

如果你安装Nginx后,不知道Nginx日志的存放地址,可以采用如下方式:

  1. 首先,使用如下命令查看Nginx的安装目录
[root@test ~] which nginx
/usr/local/nginx/sbin/nginx
  1. 其次,使用如下命令进入到log目录中
[root@test local] cd /usr/local/nginx

[root@test nginx] ls
conf logs sbin ... 

[root@test nginx]cd ./logs

[root@test logs] ls -l
total 92540
-rw-r--r-- 1 root root 92712667 Apr 19 15:16 access.log
-rw-r--r-- 1 root root  2033057 Apr 19 15:00 error.log
-rw-r--r-- 1 root root        6 Apr 18 09:20 nginx.pid

如此,你便可以访问Nginx日志的存放地址。

如果随着Nginx版本的升级,Nginx默认的访问地址不在该目录下,你可以通过如下命令查看Nginx的配置文件:

[root@test nginx] cd /usr/local/nginx/conf

[root@test conf] cat nginx.conf

user  root;
worker_processes  1;

#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;

pid        /usr/local/nginx/logs/nginx.pid;
...
http {
    include       mime.types;
    default_type  application/octet-stream;

    #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  logs/access.log  main;
    ......
    }
}

在配置文件中,你可以看到nginxaccess_logerror.log的地址,只不过注释了。

【注意】这里的地址是相对地址,相对于Nginx安装目录的地址。

2. Nginx访问日志(access.log)

2.1 简述访问日志


所有与网站访问者有关的活动都记录在访问日志中,如下图所示:

在这里插入图片描述

在这种日志中,你可以看下到最近访问过如下信息:

  1. 请求接口、方法(get,post...)等

  2. Nginx是如何响应客户端请求的

  3. 客户端的IP地址

  4. 客户端使用的是什么浏览器

通过使用访问日志的信息,你可以监控流量,找到网站在一段时间内的使用情况。

如果你正确地监控访问日志,那么你可以很容易地发现一些由用户发送的异常请求,从而检查部署的应用程序的缺陷。

2.2 启用Nginx访问日志


您可以在服务器部分或HTTP中使用access_log指令启用访问日志,如下代码所示:

access_log log_file log_format ;

log_file是强制性的,而log_format是可选的。

如果您未提及日志格式,则将以默认的组合格式键入日志。

默认情况下,访问日志是在Nginx配置文件中定义的。

因此,所有虚拟主机的访问日志将存储在同一配置文件中,如下代码所示:


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

建议通过记录到新的单独文件中,来分开所有虚拟主机的访问日志,如下代码所示:

http {
      ...
      ...
      access_log  /var/log/nginx/access.log;
   
         server {
                  listen 80;
                  Server_name test.com
                  access_log  /var/log/nginx/test.access.log;
                  ...
                  ...
                }
}

重新加载新的Nginx配置。

现在,您可以使用以下命令,在文件/var/log/nginx/test.access.log中访问test.com域的访问日志:

sudo tail -f /var/log/nginx/test.access.log

2.3 自定义访问日志中的格式

我们解释一个定义自定义访问日志格式的示例。

默认情况下,访问日志以组合日志格式记录。

因此,您可以使用gzip response的值扩展预定义格式的压缩率,如下代码所示:


http {
            log_format custom '$remote_addr - $remote_user [$time_local] '
                           '"$request" $status $body_bytes_sent '
                           '"$http_referer" "$http_user_agent" "$gzip_ratio"';

            server {
                    gzip on;
                    ...
                    access_log /var/log/nginx/test.access.log custom;
                    ...
            }
}

Nginx的配置进行所有更改后,请重新加载Nginx。

接着运行tail命令以在事件日志的末尾显示gzip比率,如下代码所示:

$ sudo tail -f /var/log/nginx/example.access.log

3. Nginx错误日志(error.log)

3.1 简述错误日志


如果Nginx突然停止运行或无法正常工作,它将在错误日志中记录所有事件,如下图所示:

在这里插入图片描述

因此,使用错误日志,您可以找到更多详细信息。

它还记录警告,但无法识别已发生的问题。

3.2 启用错误日志


error_log指令的以下语法:

error_log log_file log_level ;

log_file表示日志文件路径,log_level标识日志事件的安全级别。

我们在下面提到了一个示例,其中,在服务器上下文中的error_log指令中执行覆盖:


http {
       ...
       ...
       error_log  /var/log/nginx/error_log;
       server {
                listen 80;
                server_name example1.com;
                    error_log  /var/log/nginx/example1.error_log  warn;
                        ...
       }
       server {
                listen 80;
                server_name test2.com;
                    error_log  /var/log/nginx/test2.error_log  debug;
                        ...
   }
}

当需要禁用错误日志时,请将日志文件的名称分配给/dev/null,如下代码:

error_log/dev/null;

3.3 Nginx错误日志的安全级别


您可以在错误日志中使用以下安全级别:

  1. emerg:当系统不稳定时,用于紧急消息

  2. alert:生成严重问题的警报消息。

  3. crit:用于紧急情况下立即处理。

  4. error:处理页面时,可能会发生错误。

  5. warn:用于警告消息

  6. notice:您也可以忽略的通知日志。

  7. info:有关信息,消息

  8. debug:指向用于调试信息的错误位置。

4. 文末总结


Nginx访问和错误日​​志对于记录某些活动非常有用。

以上就是如何在Linux系统上启用和查看这些类型的Nginx日志的全部内容。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/459278.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

vue3中如何引入element-icon并使用

简单来说,步骤就是: 安装——注册——按需引入——使用 安装 # NPM $ npm install element-plus/icons-vue # Yarn $ yarn add element-plus/icons-vue # pnpm $ pnpm install element-plus/icons-vue注册 您需要从 element-plus/icons-vue 中导入所有…

【BI软件】零编程构建财务分析模型(行计算模型)

上一讲和大家讲到,自定义SQL是用个性化的开发去满足个性化的需求,而分析模型则是用共性的开发去满足个性化的需求。而分析模型的好处显而易见,通过分析模型来开发报表,更灵活、更高效,而且开发及运维的成本非常低。同时…

C++中引用的基本内容

个人主页:平行线也会相交 欢迎 点赞👍 收藏✨ 留言✉ 加关注💓本文由 平行线也会相交 原创 收录于专栏【C之路】 引用,其实没啥特别的,就是起外号,或者说起小名。就比如说孙悟空就有很多外号,如…

基于Python实现个人手机定位分析

TransBigData是一个为交通时空大数据处理、分析和可视化而开发的Python包。本文就来用它实现个人手机定位分析,感兴趣的小伙伴可以了解一下 但其实交通时空大数据并不仅仅局限于交通工具产生的数据,我们的日常生活中也会产生大量的数据。比如我们的手机…

前端 百度地图绘制路线加上图片

使用百度官方示例的方法根据起终点经纬度查询驾车路线但是只是一个线路 <template><div class"transportInfo"><div id"mapcontainer" class"map">11</div><div class"collapse"><el-collapse v-mo…

CA(证书颁发机构)

CA 根证书路径/csk-rootca/csk-ca.pem&#xff1b; ~ 签发数字证书&#xff0c;颁发者信息&#xff1a;(仅包含如下信息) C CN ST China L BeiJing O skills OU Operations Departments CN CSK Global Root CA 1.修改证书的路径以及相关配置 vi /etc/pki/tls/op…

el-upload文件上传组件的封装

样式1 样式2 上传的格式 // annexUrl 数据格式如下[{"uid": 1682329534561,"name": "2023/04/24/273f36b860a74e79be3faed3ce20236f.pdf","suffix": ".pdf","url": "http://192.168.0.254:19000/annex/2023/…

JVM系列(十) 垃圾收集器之 Parallel Scavenge/Old

上篇文章我们讲解了单线程垃圾收集器 Serial/SerialOld &#xff0c;与之相对应的多线程垃圾收集器就是 Parallel Scavenge/Old&#xff0c; 本文我们讲解下多线程垃圾收集器 Parallel Scavenge/Old 垃圾收集器 新生代收集器&#xff1a; Serial、ParNew、Parallel Scavenge&…

数据库 | 什么是视图?怎么使用?什么是索引?

目录 一、视图 1 、视图概念 2、为什么要使用视图 3 、性能问题 4 、定义视图 5、查看视图 6、删除视图 二、索引 1、引入索引的问题 2、索引是什么 3、索引为什么选择b树 一、视图 1 、视图概念 视图&#xff08;View&#xff09;是一种虚拟存在的表&#xff0c;对…

【DRF配置管理】如何建立完善的DRF自带接口docs文档

原文作者&#xff1a;我辈李想 版权声明&#xff1a;文章原创&#xff0c;转载时请务必加上原文超链接、作者信息和本声明。 DRF应用和管理 【DRF配置管理】Django使用DRF框架 【DRF配置管理】如何实现JWT认证 【DRF配置管理】如何在视图函数配置参数(一) 【DRF配置管理】如何…

okcc呼叫问题的解决方法(建议收藏)

很多客户开始使用OKCC呼叫中心系统&#xff0c;运营经常遇到的问题是呼叫打不通&#xff0c;无话单&#xff0c;呼叫秒挂&#xff0c;语音提示"您没有使用业务的权限"等等异常情况&#xff0c;而且反馈线路正常&#xff0c;使用呼叫系统拨打就是呼不通。 OKCC系统…

史上最烂 spring aop 原理分析

盗引中篇spring aop spring aop: jdk 动态代理和 cglib 动态代理的特点、区别、使用方式、原理及各自对反射的优化、二者在 spring 中的统一、通知顺序、从 Aspect 到 Advisior、静态通知调用、动态通知调用。 版本 jdk&#xff1a;8spring&#xff1a;5.3.20spring boot&…

华为OD机试(20222023)真题目录 + 考点 + 复盘思路

大家好&#xff0c;我是哪吒。 本专栏包含了最新最全的华为OD机试真题&#xff0c;有详细的分析和Java代码解答。已帮助1000同学顺利通过OD机考&#xff0c;发现新题目&#xff0c;随时更新。 以下为华为OD机试真题题库。 1、华为OD机试真题&#xff08;Java&#xff09;&am…

创建型模式-原型模式

原型模式 介绍 用一个已经创建的实例作为原型&#xff0c;通过复制该原型对象来创建一个和原型对象相同的新对象 结构 原型模式包含如下角色&#xff1a; 抽象原型类&#xff1a;规定了具体原型对象必须实现的的 clone() 方法。具体原型类&#xff1a;实现抽象原型类的 cl…

Linux文本处理三大利器Grep、AWK、Sed

写在前面 Linux三剑客是文本处理工具&#xff0c;它们可以帮助我们快速、高效地对文本进行处理。其中包括了grep、awk、以及sed这三个强大的命令行工具。 Linux 三剑客主要作用: grep&#xff0c;它可以根据正则表达式查找相关内容并打印对应的数据。awk&#xff0c;它可以根…

redhat8配置vsftpd服务

目录 一、匿名访问模式 1.1、ftp服务器端修改配置&#xff08;配置文件&#xff1a;/etc/vsftpd/vsftpd.conf&#xff09; 1.2 修改ftp目录的权限 1.3 设置selinux服务对ftp服务的访问规则策略为允许 1.4 防火墙添加ftp服务 1.5 测试 二、本地用户模式 2.1 服务端修改配…

6、什么是类型断言?

虽然 TypeScript 很强大&#xff0c;但有时还不如我们了解一个值的类型方便&#xff0c;这时候我们更希望 TypeScript 不要帮我们进行类型检查&#xff0c;而是交给我们自己来&#xff0c;所以就用到了类型断言。类型断言有点像是一种类型转换&#xff0c;它把某个值强行指定为…

Vue收集表单数据学习笔记

收集表单数据 v-model双向数据绑定&#xff0c;收集的是input框的value&#xff0c;单选按钮不存在value&#xff0c;就像代码中的男女选项&#xff0c;即使绑定性别v-model“sex”&#xff0c;控制台依然不能接收性别的值&#xff0c;因为没有value值&#xff0c;&#xff0c…

python 第二章——数据类型详解

文章目录 前言一、什么是数据类型1.变量2.注释 二、数字三、字符串四、布尔五、列表六、元组七、集合八、字典总结 前言 本系列教程目录&#xff0c;可点击这里查看&#xff1a;Python教程目录 学习一门编程语言&#xff0c;第一件事就应该是熟练掌握这门编程语言的基本数据类…

[Java]JavaWeb开发中的MVC设计模式

一、有关Java Web与MVC设计模式 学习过基本Java Web开发的人都已经了解了如何编写基本的Servlet&#xff0c;如何编写jsp及如何更新浏览器中显示的内容。但是我们之前自己编写的应用一般存在无条理性&#xff0c;对于一个小型的网站这样的编写没有任何问题&#xff0c;但是一但…