nginx打印请求头日志方法亲测可用(openresty)

这篇具有很好参考价值的文章主要介绍了nginx打印请求头日志方法亲测可用(openresty)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、前言

之前想用nginx打印收到的请求的请求头,但是只找到打印请求体的,没有打印请求头的,感觉原版nginx不支持。

建议如果想打印请求头,先换成openresty

(本人安装的是openresty-1.21.4.1.tar.gz版本的)

网上有些文章的配置,本人试了后发现不行,各种报错,不知道为什么;

这个的配置可以,在此记录下

二、openresty打印请求头方法

1.安装好openresty

2.找到nginx配置文件nginx.conf,增加一种日志打印格式,可以写在http {里:


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"';

    #这个是自定义的打印请求头的日志格式
        log_format accesslog_headers  '$time_iso8601'
                        '\t$request_time'
                        '\t$status'
                        '\t$remote_addr'
                        '\t$http_x_forwarded_for'
                        '\t$host'
                        '\t$server_addr'
                        '\t$request_method'
                        '\t$uri' #cs-uri-stem
                        '\t$args' #cs-uri-query
                        '\t"$http_user_agent"'
                        '\t"$http_referer"'
                        '\t$bytes_sent'
                        '\t$request_length'
                        '\t$upstream_addr'
                        '\t$upstream_status'
                        '\t$upstream_response_time'
                        '\t$request_uri'
                        '\t$request_headers'; #设置这个变量,后面赋值

    #这里配置后全局的日志都会用默认日志格式main,日志打印位置是logs文件夹里的access.log文件
    access_log  logs/access.log  main;


3.继续修改nginx.conf,可以在想打印request_header的location里加,也可以加在全局。

以下是在某个location里加的方法样例:

location /my/header/api/ {
        #这个是增加的,使用打印请求头的日志格式accesslog_headers,日志打印位置是logs/access_headers.log
        access_log  logs/access_headers.log  accesslog_headers;
        
        #给request_headers变量赋值,使用lua获取到请求头
        set_by_lua $request_headers 'local h = ngx.req.get_headers()
                                local request_headers_all = ""
                                for k, v in pairs(h) do
                                    request_headers_all = request_headers_all .. ""..k..": "..v..";"
                                end
                                return request_headers_all';

这样配置可以指定访问某个location才打印header,并且不影响main格式的日志,比较方便。

4.保存配置文件,重启nginx。

5.当有请求访问/my/header/api/时,就会打印日志,本人的日志文件路径在/home/myuser/openresty/nginx/logs /access_headers.log

三、备注

1.如果想打印请求体,直接日志格式log_format里加默认的$request_body即可(不用自己赋值),然后就会打印出来。(再次注意原版nginx没有$request_header,所以才换成openresty自己用lua赋值)

2.如果想打印响应头和响应体(例如后台服务器返回的),也可以自己日志格式里加2个变量,后续用lua赋值,然后打印。文章来源地址https://www.toymoban.com/news/detail-439885.html

到了这里,关于nginx打印请求头日志方法亲测可用(openresty)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • linux安装nginx,配置系统文件,配置systemctl命令,亲测可用,

    先安装gcc-c++编译器 安装pcre包 安装zlib包 在/usr/local/创建nginx文件 进入nginx目录 下载nginx安装包 注:如果没有wget命令,就安装命令 解压安装包 执行以下三个命令 添加到系统服务中 最后加入配置 重载配置 添加systemctl命令 添加内容 重新加载系统服务 启动服务 停止服务 重启

    2024年02月02日
    浏览(60)
  • centos系列:【 全网最详细的安装配置Nginx,亲测可用,解决各种报错】

    #输出实例 #补充Nginx常用命令 #查看Nginx进程 #全局配置 #I/O事件配置 #HTTP配置 #日志配置 #生成用户密码认证文件 #修改主配置文件相对应目录,添加认证配置项 #创建网页内容存放的地方 #配置网页 #配置nginx.conf #亲测配置示例 #修改hosts文件 #配置完后,输入htttp://192.168.88.130:

    2024年04月28日
    浏览(42)
  • nginx如何设置access.log打印请求头、请求体等信息

    通常我们使用nginx的默认配置,access.log日志中打印的信息会很少。如果我们想查询某次请求的请求头和请求体去排查问题会十分麻烦。但是nginx其实自带了很多可配置的参数。下面我们来介绍一下,并给大家一个常用的配置示例。 在http结构内,server结构外添加以下配置: 在

    2024年02月11日
    浏览(67)
  • Spring Boot 自定义注解,AOP 切面统一打印出入参请求日志

    今天主要说说如何通过自定义注解的方式,在 Spring Boot 中来实现 AOP 切面统一打印出入参日志。小伙伴们可以收藏一波。 废话不多说,进入正题! 在看看实现方法之前,我们先看下切面日志输出效果咋样: 从上图中可以看到,每个对于每个请求,开始与结束一目了然,并且

    2024年02月08日
    浏览(49)
  • 五种css溢出隐藏的方法----亲测可用

    CSS中的文本溢出和多行省略是在布局设计中经常会遇到的问题。本文将介绍CSS的文本溢出和多行省略的实现方法。 目录 一、文本溢出 1.1、单行文本溢出省略: 1.2、多行文本溢出省略: 二、多行省略 2.1、使用纯文本实现 2.2、使用伪元素实现 总结 当容器中的文本内容超出容

    2024年02月09日
    浏览(42)
  • Spring boot结合SkyWalking-Trace工具类实现日志打印请求链路traceid

    随着业务的复杂化、解耦化,运维人员和开发人员需要对请求链路跟踪来快速发现和定位问题,基于应用已经集成了SkyWalking的前提下,如何通过获取SkyWalking生成的统一traceId并加入打印日志中,方便开发人员能够根据链路ID快速搜索单个请求的全链路日志呢? trace-id的生成:

    2024年02月15日
    浏览(48)
  • springboot项目访问图片(4种方法亲测可用)

    第一章 编写配置类实现WebMvcConfigurer接口映射访问 第二章 通过Nginx反向代理映射访问文件 第三章 通过七牛云OSS访问图片 第四章 通过Minio文件存储器访问图片(自己搭建OSS文件存储) 提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 系列文章

    2024年02月06日
    浏览(39)
  • tomcat和nginx的日志记录请求时间

            当系统卡顿时候,我们需要分析时间花费在哪个缓解。项目的后端接口可以记录一些时间,此外,在我们的tomcat容器和nginx网关上也可以记录一些有关请求用户,请求时间,响应时间的数据,可以提供更多的信息以便于排查问题。 1.tomcat日志 server.xml 以下列出了一些

    2024年02月14日
    浏览(50)
  • Taurus .Net Core 微服务开源框架:Admin 插件【4-2】 - 配置管理-Mvc【含请求日志打印】

    继上篇:Taurus .Net Core 微服务开源框架:Admin 插件【4-1】 - 配置管理-Kestrel【含https启用】 本篇继续介绍下一个内容: 界面如图: 以下为配置说明: 控制 Taurus 的 Mvc 是否启用,比如网关、或注册中心,或者使用其它Mvc框架,可以选择不启用。 如正常访问Mvc时: 禁用它后:

    2024年02月11日
    浏览(48)
  • logbak日志单独打印(方法层级)

    问题 前几天朋友在群里问,怎么针对方法打印打印日志,不是针对类。 解决办法 方法层 logback 配置文件 这一步已经做到根据方法打印log日志,但是朋友的具体需求 竟然是针对每调用一次方法,生成一个配置文件 直接在方法层实现 每调用一次,输出一份文件

    2024年02月22日
    浏览(32)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包