Nginx根据Status保存日志,及ngx_http_log_module 模块介绍

2023-05-16

 

前言

      Nginx日志对于统计、系统服务排错很有用。Nginx日志主要分为两种:access_log(访问日志)和error_log(错误日志)。通过访问日志我们可以得到用户的IP地址、浏览器的信息,请求的处理时间等信息。错误日志记录了访问出错的信息,可以帮助我们定位错误的原因。本文将详细描述一下如何配置Nginx日志。

设置access_log

访问日志主要记录客户端的请求。客户端向Nginx服务器发起的每一次请求都记录在这里。客户端IP,浏览器信息,referer,请求处理时间,请求URL等都可以在访问日志中得到。当然具体要记录哪些信息,你可以通过log_format指令定义。

语法

access_log path [format [buffer=size] [gzip[=level]] [flush=time] [if=condition]]; # 设置访问日志
access_log off; # 关闭访问日志
  • path 指定日志的存放位置。
  • format 指定日志的格式。默认使用预定义的combined
  • buffer 用来指定日志写入时的缓存大小。默认是64k。
  • gzip 日志写入前先进行压缩。压缩率可以指定,从1到9数值越大压缩比越高,同时压缩的速度也越慢。默认是1。
  • flush 设置缓存的有效时间。如果超过flush指定的时间,缓存中的内容将被清空。
  • if 条件判断。如果指定的条件计算为0或空字符串,那么该请求不会写入日志。

另外,还有一个特殊的值off。如果指定了该值,当前作用域下的所有的请求日志都被关闭。

作用域

    可以应用access_log指令的作用域分别有httpserverlocationlimit_except。也就是说,在这几个作用域外使用该指令,Nginx会报错。

以上是access_log指令的基本语法和参数的含义。下面我们看一几个例子加深一下理解。

基本用法

access_log /var/logs/nginx-access.log

该例子指定日志的写入路径为/var/logs/nginx-access.log,日志格式使用默认的combined

access_log /var/logs/nginx-access.log buffer=32k gzip flush=1m

该例子指定日志的写入路径为/var/logs/nginx-access.log,日志格式使用默认的combined,指定日志的缓存大小为32k,日志写入前启用gzip进行压缩,压缩比使用默认值1,缓存数据有效时间为1分钟。

使用log_format自定义日志格式

Nginx预定义了名为combined日志格式,如果没有明确指定日志格式默认使用该格式:

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

如果不想使用Nginx预定义的格式,可以通过log_format指令来自定义。

语法

log_format name [escape=default|json] string ...;
  • name 格式名称。在access_log指令中引用。
  • escape 设置变量中的字符编码方式是json还是default,默认是default
  • string 要定义的日志格式内容。该参数可以有多个。参数中可以使用Nginx变量。

下面是log_format指令中常用的一些变量:

变量含义
$bytes_sent发送给客户端的总字节数
$body_bytes_sent发送给客户端的字节数,不包括响应头的大小
$connection连接序列号
$connection_requests当前通过连接发出的请求数量
$msec日志写入时间,单位为秒,精度是毫秒
$pipe如果请求是通过http流水线发送,则其值为"p",否则为“."
$request_length请求长度(包括请求行,请求头和请求体)
$request_time请求处理时长,单位为秒,精度为毫秒,从读入客户端的第一个字节开始,直到把最后一个字符发送张客户端进行日志写入为止
$status响应状态码
$time_iso8601标准格式的本地时间,形如“2017-05-24T18:31:27+08:00”
$time_local通用日志格式下的本地时间,如"24/May/2017:18:31:27 +0800"
$http_referer请求的referer地址。
$http_user_agent客户端浏览器信息。
$remote_addr客户端IP
$http_x_forwarded_for当前端有代理服务器时,设置web节点记录客户端地址的配置,此参数生效的前提是代理服务器也要进行相关的x_forwarded_for设置。
$request完整的原始请求行,如 "GET / HTTP/1.1"
$remote_user客户端用户名称,针对启用了用户认证的请求
$request_uri完整的请求地址,如 "https://daojia.com/"

下面演示一下自定义日志格式的使用:

access_log /var/logs/nginx-access.log main
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指令定义了一个main的格式,并在access_log指令中引用了它。假如客户端有发起请求:https://suyunfe.com/,我们看一下我截取的一个请求的日志记录:

112.195.209.90 - - [20/Feb/2018:12:12:14 +0800] "GET / HTTP/1.1" 200 190 "-" "Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Mobile Safari/537.36" "-"

我们看到最终的日志记录中$remote_user$http_referer$http_x_forwarded_for都对应了一个-,这是因为这几个变量为空。

设置error_log

错误日志在Nginx中是通过error_log指令实现的。该指令记录服务器和请求处理过程中的错误信息。

语法

配置错误日志文件的路径和日志级别。

error_log file [level];
Default:    
error_log logs/error.log error;

第一个参数指定日志的写入位置。

第二个参数指定日志的级别。level可以是debuginfonoticewarnerrorcritalert,emerg中的任意值。可以看到其取值范围是按紧急程度从低到高排列的。只有日志的错误级别等于或高于level指定的值才会写入错误日志中。默认值是error

基本用法

error_log /var/logs/nginx/nginx-error.log

它可以配置在:main, httpmailstreamserverlocation作用域。

例子中指定了错误日志的路径为:/var/logs/nginx/nginx-error.log,日志级别使用默认的error

open_log_file_cache

每一条日志记录的写入都是先打开文件再写入记录,然后关闭日志文件。如果你的日志文件路径中使用了变量,如access_log /var/logs/$host/nginx-access.log,为提高性能,可以使用open_log_file_cache指令设置日志文件描述符的缓存。

语法

open_log_file_cache max=N [inactive=time] [min_uses=N] [valid=time];
  • max 设置缓存中最多容纳的文件描述符数量,如果被占满,采用LRU算法将描述符关闭。
  • inactive 设置缓存存活时间,默认是10s。
  • min_uses 在inactive时间段内,日志文件最少使用几次,该日志文件描述符记入缓存,默认是1次。
  • valid:设置多久对日志文件名进行检查,看是否发生变化,默认是60s。
  • off:不使用缓存。默认为off。

基本用法

open_log_file_cache max=1000 inactive=20s valid=1m min_uses=2;

它可以配置在httpserverlocation作用域中。

例子中,设置缓存最多缓存1000个日志文件描述符,20s内如果缓存中的日志文件描述符至少被被访问2次,才不会被缓存关闭。每隔1分钟检查缓存中的文件描述符的文件名是否还存在。

其他

Nginx中通过access_logerror_log指令配置访问日志和错误日志,通过log_format我们可以自定义日志格式。如果日志文件路径中使用了变量,我们可以通过open_log_file_cache指令来设置缓存,提升性能。

另外,在access_loglog_format中使用了很多变量,这些变量没有一一列举出来,详细的变量信息可以参考Nginx官方文档

 

问题:

最近一个需求,要更具Status返回值记录不同日志。网上查了下,stackoverflow里找到了方法。

https://stackoverflow.com/questions/19011719/how-to-write-only-logs-with-200-status

nginx 1.7.0+ allows using an if condition in access_log directive itself.

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

The if parameter (1.7.0) enables conditional logging.
A request will not be logged if the condition evaluates to “0” or an empty string

Combined with map directive its possible to send log events to different logs based on various conditions.

http {

    map $status $normal {
        ~^2  1;
        default 0;
    }
    map $status $abnormal {
        ~^2  0;
        default 1;
    }
    map $remote_addr $islocal {
        ~^127  1;
        default 0;
    }

    server {

        access_log logs/access.log combined if=$normal;
        access_log logs/access_abnormal.log combined if=$abnormal;
        access_log logs/access_local.log combined if=$islocal;

    }  
}

http://nginx.org/en/docs/http/ngx_http_log_module.html
http://nginx.org/en/docs/http/ngx_http_map_module.html

从nginx 1.7版本开始,access_log日志文件中支持if语句判断。根据这个功能,我们可以根据status值分割nginx日志,正常200的访问记录放一个文件,404或者500等再放另外一个文件。对于后续分析nginx日志可能有用。

语法:

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

The if parameter (1.7.0) enables conditional logging.
A request will not be logged if the condition evaluates to “0” or an empty string

值是0时,access_log就不会记录日志。具体配置方法如下。

在nginx.conf代码块中添加如下内容:

    map $status $normal {
        ~^2  1;
        default 0;
    }
    map $status $abnormal {
        ~^2  0;
        default 1;
    }
    map $remote_addr $islocal {
        ~^127  1;
        default 0;
    }

这个配置的意思大概是status值2开头的都正常,其他都是不正常访问。如果remote_addr是127,那么说明是本地内部调用。

定义好判断值后,在具体server代码块中添加类似如下:

    server {
        access_log logs/access.log combined if=$normal;
        access_log logs/access_abnormal.log combined if=$abnormal;
        access_log logs/access_local.log combined if=$islocal;
    }

添加后reload重新载入nginx,可以看到nginx日志已经根据Status返回值正常分割。

Nginx预定义了名为combined日志格式,如果没有明确指定日志格式默认使用该格式:

log_format combined '$remote_addr - $remote_user [$time_local] '
                    '"$request" $status $body_bytes_sent '
                    '"$http_referer" "$http_user_agent"';
复制代码

如果不想使用Nginx预定义的格式,可以通过log_format指令来自定义。

################################

ngx_http_log_module 模块可以按照特定的格式记录访问日志。

它是基于 location 上下文的,所以如果有内部跳转,那么有些变量可能会变。

Syntax:	access_log path [format [buffer=size] [gzip[=level]] [flush=time] [if=condition]];
access_log off;
Default: access_log logs/access.log combined;
Context: http, server, location, if in location, limit_except

combined 默认格式定义如下。

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

如果指定了 gzip 压缩,那么 缓冲区的数据会压缩后才会写入到文件,需要zlib库的支持。

access_log /path/to/log.gz combined gzip flush=5m;

flush=5m代表缓冲区5分钟后到期,就算没满也刷新的磁盘。如果开启了缓冲区那么只要满足3个条件就会刷新到磁盘:

1.缓冲区满了。
2.缓冲区到期。
3.nginx -s reload。

如果日志路径 path里包含变量,那么缓冲区不生效,在每次记录日志时文件将会打开和关闭,非常耗性能。但是可以指定 open_log_file_cache缓存来避免频繁的打开关闭文件。每次写日志的时候都会去校验根目录是否存在,如果不存在,日志将不创建。所以最好同时指定 root 和 access_log。

server {
    root       /spool/vhost/data/$host;
    access_log /spool/vhost/logs/$host;
    ...
}

同时也支持 if 条件,满足则记录。

map $status $loggable {
    ~^[23]  0;
    default 1;
}

access_log /path/to/access.log combined if=$loggable;

 

Syntax:	log_format name [escape=default|json|none] string ...;
Default: log_format combined "...";
Context: http

指定日志格式,escape指定转义,none代表不转义。

log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                  '$status $body_bytes_sent "$http_referer" '
                  '"$http_user_agent" "$http_x_forwarded_for"';

 

Syntax:	open_log_file_cache max=N [inactive=time] [min_uses=N] [valid=time];
open_log_file_cache off;
Default: open_log_file_cache off;
Context: http, server, location

打开文件缓存,要来避免在path里包含变量时频繁的打开和关闭文件。

max  指定缓存的文件描述符最大数量,超过了把最前面缓存的删除。

inactive  指定没访问的文件的超时时间,超过了自动关闭文件。

min_uses  就算超时了,如果文件使用次数没超过此数,也不关闭。

valid  有效时间,超过了这个时间就会重新去校验文件是否存在。

off  关闭。

open_log_file_cache max=1000 inactive=20s valid=1m min_uses=2;

记录syslog

access_log syslog:server=192.168.1.202:514,tag=nginx,facility=local7,severity=crit combined;

上面的意思是,将访问日志通过udp方式发送到 192.168.1.202:514,标签为 nginx,priority标记为 local7.crit,日志格式为默认的 combined。

192.168.1.202 /etc/rsyslog.conf 部分配置如下,开启了udp,local7.*记录到 /var/log/boot.log文件里。

# Provides UDP syslog reception
$ModLoad imudp
$UDPServerRun 514

# Save boot messages also to boot.log
local7.*                                                /var/log/boot.log

假设我们的nginx服务器在 192.168.1.10 上。

curl localhost

那么在 202的日志文件 /var/log/boot.log 就会看到如下一条记录。

Jul 18 11:53:01 localhost.localdomain nginx: 127.0.0.1 - - \
[18/Jul/2018:11:53:01 +0800] "GET / HTTP/1.1" 200 18 "-" "curl/7.29.0"

如果在 access_log 配置上加上 nohostname 标记,那么上面的 localhost.localdomain 就会消失。

当然也支持 本地 unix domain socket。

access_log syslog:server=unix:/run/x.sock,tag=nginx,facility=local7,severity=crit combined;

syslog详细知识点请参考 linux c syslog 和 linux命令logger。

 

多条件判断

功能:所有日志(正确和错误日志)都写人access.log,特殊错误日志写入access_abnormal.log

map $status $abnormal {  #返回码筛选
    ~^2  0;
    default 1;
}

map $request_uri $log_uriignore {  #屏蔽的url
    ~^/err/a  0;
    default 1;
}
server {
    access_log logs/access.log combined;  #所有日志(正确和错误日志)都写人access.log

    location /err/a/1 {
        set $flag "${abnormal}${log_uriignore}";
        if ($flag = "11") {

            #作用域当前location ,如果进入,将屏蔽server的access_log 配置
            access_log logs/access.log combined;  #不加这个 ,log_uriignore日志不会写入access.log
            access_log logs/access_abnormal.log combined ;
        }

        set $ret $abnormal&$log_uriignore;
        set $ret_body '{"code": "V00001","msg": "111"} $abnormal $log_uriignore ${abnormal}${log_uriignore} $flag';
        return 404 $ret_body;
    }

    location /err/b/2 {
        set $flag "${abnormal}${log_uriignore}";
        if ($flag = "11") {

            #作用域当前location ,如果进入,将屏蔽server的access_log 配置
            access_log logs/access.log combined; #不加这个 ,log_uriignore日志不会写入access.log
            access_log logs/access_abnormal.log combined ;
        }

        set $ret_body '{"code": "V00002","msg": "222"} $abnormal $log_uriignore ${abnormal}${log_uriignore} $flag';
        return 404 $ret_body;
    }
}
 

参考官方文档即可:

https://nginx.org/r/access_log

access_log 可以使用的范围:http, server, location, if in location, limit_except
比如这个配置:
http {
    access_log a.log;
    server {
        access_log b.log;
        location /xx {
            access_log c.log;
            if yy {
                access_log d.log;
            }
        }
        location /zz {
            access_log off;
        }
    }
}
请求最终匹配到哪个 {} block,这个 block 配置了 access_log,就会覆盖上一级的 access_log

  1. 符合 if 的条件,则请求日志写到 d.log
  2. 不符合 if, 那 /xx 开头的请求会写日志到 c.log
  3. 匹配这个 server 的其他日志写到 b.log
  4. 其余日志写到 a.log
  5. 还可以对部分请求关闭日志

 

其他

加条件打印nginx调试日志。
但是打印日志也很郁闷,只要将nginx的日志级别调整到DEBUG,CORE就无法重现。为什么?因为DEBUG的日志信息量非常大,频繁地写磁盘严重影响了NGINX的性能,打开DEBUG后性能由几十万直线下降到几百qps。
调整到其他级别比如 INFO,性能虽然好了,但是日志信息量太少,没有帮助。尽管如此,日志却是个很好的工具,于是又尝试过以下办法:

  1. 针对特定客户端IP开启debug日志,比如IP是10.1.1.1就打印DEBUG,其他IP就打印最高级别的日志,nginx本身就支持这样的配置。
  2. 关闭DEBUG日志,自己在一些关键路径添加高级别的调试日志,将调试信息通过EMERG级别打印出来。
  3. nginx只开启一个进程和少量的connection数。抽样打印连接编号(比如尾号是1)的调试日志。

总体思路依然是在不明显降低性能的前提下打印尽量详细的调试日志,遗憾的是,上述办法还是不能帮助问题定位,当然了,在不断的日志调试中,对代码和逻辑越来越熟悉。

 

https://blog.nbhao.org/2627.html

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Nginx根据Status保存日志,及ngx_http_log_module 模块介绍 的相关文章

  • GET 和 POST 方法的单独 Flask 路由

    在 Flask 中定义路由时 最好的做法是使用由多个 HTTP 方法定义的单个路由 并在该单个路由中使用显式逻辑处理不同的 HTTP 方法 例如 app route api users methods GET POST def users
  • 从浏览器中删除cookie?

    有什么方法可以指示网络浏览器完全delete一个人的cookie是用PHP设置的吗 我不想expiry或者等待浏览器closed 对于删除 我的意思是实际上不再将其列在 cookie 列表中 尝试这样删除所有 cookie foreach
  • HTTP请求压缩

    一般用例 想象一下一个正在上传大量 JSON 的客户端 内容类型应保留application json因为这描述了实际数据 Accept Encoding 和 Transfer Encoding 似乎是为了告诉服务器应该如何格式化响应 看起
  • Angular4如何使用flatMap链接forkJoin

    我所处的情况是 我需要进行 5 个可以并行执行的 http 调用 在这五个调用之后需要执行另一个 http 调用 我在前 5 个中使用了 forkJoin 但我不知道如何链接 flatMap 或其他函数 forkJoin firstObse
  • 如何在部署应用程序 Elastic beanstalk 上修改 NGINX 配置

    我需要向 nginx conf 添加一些位置 以便环境 URL 指向 app php 我已经使用 vi 修改了该文件 重启 NGINX 就可以了 但我需要在使用时自动加载此配置电子部署 我已阅读并尝试过 https docs aws ama
  • 使用 nginx 将 PATCH 请求代理为 POST

    我尝试使用 nginx 将 HTTP PATCH 请求重定向到 HTTP POST 请求 我还尝试了以下配置 但它不起作用 我收到 400 错误请求 http map request method my method default req
  • 您可以从 AuthorizeAttribute 返回 HTTP 响应而不引发异常吗?

    我在各种控制器上使用 AuthorizeAttribute 可能需要根据请求本身的某些属性返回 403 或 429 请求过多 我完全在自定义 OnAuthorization 实现中实现了它 然后在必要时抛出一个带有适当响应代码的新 Http
  • 在 Flex 中以 HTTP Post 方式上传任意数据

    我们目前有一个 Java 小程序 可以生成大量数据并将其上传到我们的服务器 我们拥有的上传方法之一是使用 HTTP POST 到我们的服务器 其内容只是原始数据 没有多部分编码或任何内容 我正在考虑实现一个具有相同功能的 Flex 应用程序
  • GitLab 发布临时 IP 禁令 - 403 禁止

    我的 GitLab 实例设置有时会对我们自己的 IP 地址实施 IP 禁令 导致办公室中的所有用户在任何网页或 git 请求上都会收到 403 Forbidden 该禁令的实施是由于身份验证重复出现错误 这完全是一个单独的问题 但我想防止我
  • Squid 可以在 nginx 后面运行吗?

    我正在尝试在 nginx 后面运行一个鱿鱼服务器 我这样配置 nginx server listen 8080 location proxy pass http localhost 3128 proxy set header Host ho
  • Angular2 中 Http 的 Promise 与 Observable? [复制]

    这个问题在这里已经有答案了 本质上 正如标题所说 是否有任何理由使用可观察的承诺 https stackoverflow com questions 37364973 angular 2 promise vs observable为了进行
  • nginx设置问题

    我知道这不是一个直接的编程问题 但是 stackoverflow 上的人似乎能够回答任何问题 我有一台运行 Centos 5 2 64 位的服务器 非常强大的双核 2 服务器 具有 4GB 内存 它主要提供静态文件 Flash 和图片 当我
  • 当会话令牌无效时,我应该使用什么状态代码?

    创建 Web 服务 RESTful 时 当会话令牌无效时我应该使用什么状态代码 目前我公司的人给我发了一个404 未找到 但我认为这是不正确的 因为资源存在 也许我应该使用 401 Unauthorized 你怎么认为 您建议我在这种情况下
  • nginx - 禁用特定 URL 的 HTTPS 重定向

    我将 nginx 设置为将所有 HTTP 请求重定向到 HTTPS 如下所示 Redirect every request to HTTPS server listen 80 listen 80 server name sub exampl
  • 通过 ESI:include 设置 Cookie,如何?

    我正在尝试使用 esi 在我的网站上创建忍者缓存 这个想法是 该网站大部分是静态的 我只需要在用户是否登录时做一些花哨的事情 所以我试图在页面A上放置一个 并在页面B的应用程序中设置触发器 这样我就可以将页面 A 缓存在 varnish 上
  • 使用 PM2 将节点作为服务运行 - 连接被拒绝

    我正在关注this https www digitalocean com community tutorials how to set up a node js application for production on ubuntu 16
  • slim 3 php 应用程序无法在 CentOS 上运行 nginx 访问被拒绝可能是由于 session_start() 函数

    我最近一直在努力在 macOS 上的 virtualbox 上的 CentOS 7 上安装最新的 nginx 1 14 php 7 2 5 和 mariaDB 10 3 7 php终于可以工作了 我已经测试过了php info index
  • 如何使用 Nginx 将下划线替换为破折号

    我第一次使用Nginx 对它基本上一无所知 我需要将 100 多个 URL 中的 替换为 我想一定有一种简单的方法可以用 Nginx 来做到这一点 但在 Google 上找不到任何东西 Thanks Edit 我的网址例如 http www
  • Python Requests 库重定向新 url

    我一直在浏览 Python 请求文档 但看不到我想要实现的任何功能 在我的脚本中我设置allow redirects True 我想知道该页面是否已重定向到其他内容 新的 URL 是什么 例如 如果起始 URL 为 www google c
  • 如何在 PHP 中使用 file_get_contents 获取图像的 MIME 类型

    我需要获取图像的 MIME 类型 但我只有图像的正文file get contents 是否有可能获取 MIME 类型 是的 你可以这样得到它 file info new finfo FILEINFO MIME TYPE mime type

随机推荐

  • Lombok详解

    网上看到这篇文章 xff0c 这里记录学习一下 用 x1f336 Lombok xff0c 让 Java 更简洁 ENCODE the WORLD 零 历史 一个标准的 Java bean 一个典型的 Java bean 一般具有几个属性
  • cookie setSecure详解

    1 前言 最近项目用Sparrow Health System检测漏洞 xff0c 发现存在一个setSecure安全漏洞问题 xff0c 于是网上搜索了一下 xff0c 这里记录一下 2 问题 在cas中或其他web开发中 xff0c 会
  • cookie和localStorage详解

    网上看到这篇文章 xff0c 这里记录学习一下 一文带你看懂cookie xff0c 面试前端不用愁 知乎 前言 在前端面试中 xff0c 有一个必问的问题 xff1a 请你谈谈cookie和localStorage有什么区别啊 xff1f
  • Referrer和Referrer-Policy简介

    1 什么是Referer referer参数是http请求头header里的一个关键参数 xff0c 表示的意思是链接的来源地址 xff0c 比如在页面引入图片 JS 等资源 xff0c 或者跳转链接 xff0c 一般不修改策略 xff0c
  • Filebeat 日志采集利器

    网上看到这篇文章 xff0c 觉得很不错 xff0c 这里转载记录一下 目录 Filebeat简介 Filebeat和Beats的关系 目前Beats包含六种工具 Filebeat 是什么 Filebeat 工作的流程图 Filebeat和
  • 无刷电机工作原理介绍

    一 有刷马达的原理 要讲清这一问题 xff0c 那就应粗略地了解一下有刷马达的工作原理 接下来用一个三电极 二磁极内转子有刷马达作为演示 二 无刷电机工作原理 首先 xff0c 无刷电机不是直流电机 xff0c 模型虽然是直流电池供电 xf
  • 通过filebeat、logstash、rsyslog 几种方式采集 nginx 日志

    网上看到这篇文章 xff0c 觉得很不错 xff0c 这里转载记录一下 目录 前言 一 直接通过filebeat采集日志到ES 二 通过filebeat采集日志到logstash再送到ES 接下来配置filebeat xff1a 具体配置如
  • DNS域名解析,以及A、AAAA、CNAME、MX、NS、TXT、SRV、SOA、PTR说明

    温故知新 xff0c 最近网上开到相关文章 xff0c 这里终结记录一下 xff0c 供大家参考 目录 1 A记录 2 CNAME xff1a 两种域名解析方式 4 NS记录 5 TXT记录 xff1a 6 AAAA记录 xff1a 7 S
  • Transfer-Encoding:chunked 说明

    参考 xff1a http blog csdn net wy5761 article details 17568851 先说解决方法 xff1a xff1a xff1a 不让服务器返回Transfer Encoding chunked xf
  • HTTP状态码大全,Nginx 408/499错误

    不错的一个笔记 xff01 状态码太多 xff0c 网上查了下 xff0c 在这里记录学习 状态错误码 1 信息类 xff1a 表示接收到请求并且继续处理 100 xff08 continue xff09 xff1a 说明收到了请求的初始部
  • 浏览器多标签,Http协议和底层socket的情况

    2个浏览器标签同时访问同1个url xff08 即相同ip xff09 xff0c 来get数据 xff0c 判断http的chunked数据包会不会交叉 1 发现chrome是2个标签使用同一个链接 但是第2个get是在第一个get数据收
  • 端口状态 LISTENING、ESTABLISHED、TIME_WAIT及CLOSE_WAIT详解,以及三次握手,滑动窗口

    本文根据众多互联网博客内容整理后形成 xff0c 引用内容的版权归原始作者所有 xff0c 仅限于学习研究使用 网上查了一下端口状态的资料 xff0c 我下面总结了一下 xff0c 自己学习学习 xff1a TCP状态转移要点 TCP协议规
  • http协议以及chunked编码分析

    Http协议 Http协议 格式 HTTP消息包括浏览器向服务器的请求消息和服务器向浏览器的响应消息 这两种类型的消息都由一个起始行 xff0c 一个或者多个头域 xff0c 一个头域结束的空行和可选的消息体组成 HTTP头域一般包括通用头
  • http-parser解析http报文详解

    说明 项目里用到力http parser xff0c 在这里简单说明一下其用法吧 下载地址 xff1a https github com joyent http parser 其使用说明很详细 开源用例 开源tcpflow 1 4 4中使用
  • nginx的部分内置变量介绍

    项目组接触了nginx内置变量 xff0c 网上查了查 xff0c 自己也注释一下 变量名 变量含义 arg NAME GET请求中NAME的值 即 后面的arg name 61 arg value形式的arg name args 请求中的
  • ngx_lua常用变量参数

    最近项目接触了Nginx的lua使用 xff0c 网上查了查资料 xff0c 这里记录一下 Nginx与Lua编写脚本的基本构建块是指令 指令用于指定何时运行用户Lua代码以及如何使用结果 下面是显示指令执行顺序的图 Nginx Lua模块
  • *** buffer overflow detected ***

    gcc正常编译运行正常 xff0c 加了 O就报这个 最后检查出来是sprintf buf小了
  • nginx虚拟路径中proxy_pass对后端请求的影响

    假设nginx中的配置是这样的 xff1a server listen 80 server name x x x x location subdir proxy pass http y y y y 那么 xff0c 当用户请求http x
  • Nginx 介绍,以及Nginx配置指令执行的顺序 11 个阶段

    一 Nginx介绍 Nginx的产生 没有听过Nginx xff1f 那么一定听过它的 34 同行 34 Apache吧 xff01 Nginx同Apache一样都是一种WEB服务器 基于REST架构风格 xff0c 以统一资源描述符 Un
  • Nginx根据Status保存日志,及ngx_http_log_module 模块介绍

    前言 Nginx日志对于统计 系统服务排错很有用 Nginx日志主要分为两种 xff1a access log 访问日志 和error log 错误日志 通过访问日志我们可以得到用户的IP地址 浏览器的信息 xff0c 请求的处理时间等信息