1.nginx的日志功能

定义nginx的访问日志显示的格式,即具体记录的客户端信息和格式。日志功能由ngx_http_log_module模块提供。

  • log_format name string ...;

    环境:http

    指定配置日志格式,

    name:为日志格式定义一个名称,用于调用;

    string:用于定义日志具体格式,可以使用nginx核心模块及其它模块内嵌的变量;

  • access_log path [format [buffer=size] [gzip[=level]] [flush=time] [if=condition]];

    环境:http、server、location、if in location、limit_except

    访问日志文件路径,格式及相关的缓冲的配置,服务器跑多个虚拟机时,建议日志分开存放;

    可以为某一个server或目录指定一个专门的访问日志文件,也可以关闭某些页面的访问日志,例如关闭状态页访问日志;

    access_log off:表示关闭日志

    path:日志文件路径

    format: log_format中定义的日志格式名称

    buffer=size :日志缓冲区大小,启用后日志文件中当时可能看不到,过一会写入后才可以显示

    flush=time:buffer多久写入一次

    gizip:压缩,要使gzip压缩工作,必须使用zlib库构建nginx

  • open_log_file_cache max=N [inactive=time] [min_uses=N] [valid=time];

    环境:http, server, location

    定义一个缓存,该缓存存储经常使用的日志的文件描述符,有助于加速读取日志。

    参数

    max:缓存的最大文件描述符数量,超出后关闭最小最近使用(LRU)描述符

    min_uses:在inactive指定的时长内访问大于等于此值方可被当作活动项,默认为1

    inactive:非活动时长,默认10s

    valid:验证缓存中各缓存项是否为活动项的时间间隔,默认60s

    off:禁用缓存

使用示例如下:

#1.定义常见的日志格式
[root@nginx01 web1]# vim /etc/nginx/nginx.conf
error_log /var/log/nginx/error.log notice;
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 combined1 '$remote_addr - $remote_user [$time_local] '
'"$request" $status $body_bytes_sent '
'"$http_referer" "$http_user_agent" '; access_log /var/log/nginx/access.log main;
include /etc/nginx/conf.d/*.conf;
} #2.在不同的location下调用日志
[root@nginx01 web1]# vim /etc/nginx/conf.d/virtualhost.conf
server {
listen 80;
server_name www.nginx01.com;
charset utf-8,gbk; location / {
root /data/nginx/html/web1;
index index.html;
} location /image {
root /data/nginx/html/web1/;
allow 172.0.0.1;
allow 192.168.20.0/24;
deny all;
access_log /var/log/nginx/access_image.log combined1;
} location ~* /(admin|login) {
root /data/nginx/html/web1;
auth_basic "please login!";
auth_basic_user_file /etc/nginx/.nginxuser;
access_log off;
}
} #3.重启nginx服务
[root@nginx01 web1]# systemctl reload nginx.service #4.客户端访问后查看日志内容
[root@xuzhichao ~]# curl http://www.nginx01.com
www.nginx01.com [root@xuzhichao ~]# curl http://www.nginx01.com/image/
image doc [root@xuzhichao ~]# curl --user user1:123456 http://www.nginx01.com/admin/
admin area [root@nginx01 ~]# tail -f /var/log/nginx/access.log
192.168.20.17 - - [17/Jun/2021:18:11:45 +0800] "GET /image/ HTTP/1.1" 200 31 "-" "curl/7.29.0" "-" [root@nginx01 ~]# tail -f /var/log/nginx/access_image.log
192.168.20.17 - - [17/Jun/2021:18:12:33 +0800] "GET /image/ HTTP/1.1" 200 10 "-" "curl/7.29.0"

nginx的默认访问日志记录的内容相对比较单一,默认的格式也不方便后期做日志统计分析,生产环境中通常将nginx日志转换成json格式,然后配合ELK做日志收集,统计,分析。例如:

log_format access_json '{ "@timestamp": "$time_iso8601", '
'"remote_addr": "$remote_addr", '
'"referer": "$http_referer", '
'"request": "$request", '
'"status": $status, '
'"bytes":$body_bytes_sent, '
'"agent": "$http_user_agent", '
'"x_forwarded": "$http_x_forwarded_for", '
'"upstr_addr": "$upstream_addr",'
'"upstr_host": "$upstream_http_host",'
'"upstreamtime": "$upstream_response_time" }';

WEB服务与NGINX(13)-NGINX的日志功能的更多相关文章

  1. flask在centos下搭建web服务【uwsgi,nginx】

    centos操作系统 uWSGI是一个web服务器,Nginx进行反向代理的其实跟这些服务器可以说没有任何关系,你提供动态内容的服务器可以是apache/nginx/tomcat,当然也可以是uWSG ...

  2. 如何为Windows服务增加Log4net和EventLog的日志功能。

    一.简介 最近在做一个项目的时候,需要该项目自动启动.自动运行,不需要认为干预.不用说,大家都知道用什么技术,那就是 Windows服务.在以前的Net Framework 平台下,Windows 服 ...

  3. Web服务图片压缩,nginx+lua生成缩略图

    背景 目前而言,用移动端访问Web站点的用户越来越多,图片对流量的消耗是比较大的,之前一个用户用我们网站的app浏览的时候,2个小时耗去了2个G的流量,这是个很严重的问题,需要对图片进行压缩,减少对用 ...

  4. Web服务器之Nginx详解(操作部分)

    大纲 一.前言 二.Nginx 安装与配置 三.Nginx 配置文件详解 四.Nginx 命令参数 五.配置Nginx提供Web服务 六.配置Nginx的虚拟主机 七.配置Nginx的用户认证 八.配 ...

  5. Linux实战教学笔记37:企业级Nginx Web服务优化实战(上)

    一,Nginx基本安全优化 1.1 调整参数隐藏Nginx软件版本号信息 一般来说,软件的漏洞都和版本有关,这个很像汽车的缺陷,同一批次的要有问题就都有问题,别的批次可能就都是好的.因此,我们应尽量隐 ...

  6. svn + nginx unit + python3自动化发布web服务方法

    本周将python web服务管理更换成nginx unit以后发现接口性能有了明显的提升,访问速度快了不少.不过有个很大的问题就是使用svn自动化发布以后,服务并没有刷新使用新的代码运行,而又不懂得 ...

  7. web服务的简单介绍及apache服务的安装

    一,web服务的作用:  是指驻留于因特网上某种类型计算机的程序,可以向浏览器等Web客户端提供文档.可以放置网站文件,让全世界浏览:   可以放置数据让全世界下载.目前最主流的三个Web服务器是Ap ...

  8. 使用uwsgi 部署python web服务

    uwsgi, wsgi协议的一个很好的实现,源码在这里:https://github.com/unbit/uwsgi c语言编写,有兴趣可以研究下. 上DEMO: wsgi_server.py def ...

  9. nginx(二)nginx的安装

    下载 nginx官网下载地址 把源码解压缩之后,在终端里运行如下命令: ./configure make make install 默认情况下,Nginx 会被安装在 /usr/local/nginx ...

  10. linux web服务基础知识,dns

    #web服务基础知识c/s 客户端/服务器b/s 浏览器/服务器 nginx   >   web  server  服务端浏览器  >    web  client  客户端 #dns解析 ...

随机推荐

  1. 新前言with留言板

    旧博客也是会用的,但是现在只用博客园写博客,平时csdn的东西也会凑凑热闹 欢迎各位julao来留言板留言 /* ID:lemondi1 LANG:C++ TASK:test */ #include ...

  2. #分治 or 线段树+单调栈#CF526F Pudding Monsters

    题目 给定一个 \(n \times n\) 的棋盘,其中有 \(n\) 个棋子,每行每列恰好有一个棋子. 求有多少个 \(k \times k\) 的子棋盘中恰好有 \(k\) 个棋子. 分析 先将 ...

  3. CMake vs Makefile 如何选择适合你的项目构建工具

    CMake vs Makefile: 如何选择适合你的项目构建工具 在软件开发中,构建(build)是一个非常重要的过程.我们需要将源代码转换为可执行文件或库文件.为了完成此过程,我们通常使用构建工具 ...

  4. 【FAQ】调用应用内支付SDK时报错,如何用tag对问题进行排查和分析

    华为应用内支付服务(In-App Purchases,IAP)为开发者提供便捷的应用内支付体验和简便的接入流程.开发者的应用集成IAP SDK后,调用IAP SDK接口,启动IAP收银台,即可实现应用 ...

  5. win7系统部署django项目

        win7系统部署django项目,在Windows电脑上我使用的是  Apache + mod_wsgi 来部署的   # 背景 Python 3.8.3 Django 3.1.7 Apach ...

  6. 动态规划(二)——背包dp

    01背包问题(每个物品最多选一次) AcWing 2. 0/1背包问题 朴素の版本: #include <bits/stdc++.h> using namespace std; const ...

  7. mysql 悲观锁和乐观锁(二)

    前言 简单介绍一下,在mysql 优化系列中会重新介绍,仅仅是留个印象. 悲观锁和乐观锁其实都是概念性问题. 正文 悲观锁: 悲观锁,正如其名,具有强烈的独占和排他特性. 它指的是对数据被外界(包括本 ...

  8. 接口文档神器apidoc

    1.apidoc介绍 1.apidoc是什么? api文档生成工具:基于源代码备注创建的接口文档: 2.apidoc优势是啥? 超简单文档生成器:几乎支持目前主流的所有风格的注释, 如可在C#.Go. ...

  9. React纯组件的使用

    1. 有无必要使用纯组件 如果应用不是很大型,页面渲染效率使用纯组件与非纯组件差别不大,尽量使用组件 应用一定注意,setState时子组件依赖渲染的属性一定要传递给子组件,不然父组件setState ...

  10. DDD领域驱动设计总结和C#代码示例

    DDD(领域驱动设计)是一种软件设计方法,它强调以业务领域为核心来驱动软件的设计和开发. DDD 的设计初衷是为了解决复杂业务领域的设计和开发问题,它提供了一套丰富的概念和模式,帮助开发者更好地理解和 ...