码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • openresty 的lua在返回响应后再日志里添加自定义的状态


    理解了,你希望在 OpenResty 中将自定义状态输出到 log_format 中的日志格式里。你可以使用 Nginx 的变量机制将自定义状态记录到日志中。

    步骤如下:

    1. 使用 set_by_lua 指令在请求处理过程中设置自定义变量。
    2. 在 log_format 中引用该自定义变量。

    以下是一个完整的示例配置:

    http {
        lua_shared_dict my_dict 1m;
    
        # 定义日志格式
        log_format custom_log_format '$remote_addr - $remote_user [$time_local] "$request" '
                                     '$status $body_bytes_sent "$http_referer" '
                                     '"$http_user_agent" "$http_x_forwarded_for" '
                                     '$custom_status';
    
        # 将日志输出到文件
        access_log /var/log/nginx/access.log custom_log_format;
    
        server {
            listen 80;
    
            location / {
                # 使用 set_by_lua 设置自定义变量
                set_by_lua $custom_status '
                    ngx.ctx.custom_status = "my_custom_status"
                    return ngx.ctx.custom_status
                ';
    
                content_by_lua_block {
                    -- 生成并发送响应
                    ngx.say("Hello, OpenResty!")
    
                    -- 设置自定义状态
                    ngx.ctx.custom_status = "my_custom_status"
                }
            }
    
            log_by_lua_block {
                -- 确保自定义状态变量在 log_format 中设置
                ngx.var.custom_status = ngx.ctx.custom_status or "default_status"
            }
        }
    }
    

    在这个示例中:

    1. log_format 中定义了一个名为 custom_log_format 的日志格式,其中包括自定义变量 $custom_status。
    2. access_log 指令指定将日志输出到 /var/log/nginx/access.log,并使用 custom_log_format 格式。
    3. set_by_lua 指令用于在处理请求时设置自定义变量 $custom_status。这里使用 Lua 代码将自定义状态存储在 ngx.ctx.custom_status 中,并返回该状态以设置 $custom_status。
    4. 在 log_by_lua_block 中,将 ngx.ctx.custom_status 设置为 ngx.var.custom_status,以确保该变量在 log_format 中引用。

    这样,自定义状态将被包含在日志格式中,并输出到指定的日志文件中。确保重新加载 Nginx 配置文件以应用更改。

  • 相关阅读:
    单元测试spring-boot-starter-test
    C语言之深入指针及qsort函数(五)(详解介绍)
    管理团队按这个模板做,让你成为优秀管理者
    【进阶篇-Day6:JAVA中Arrays工具类、排序算法、正则表达式的介绍】
    使用Spring Boot和JPA创建GraphQL API
    Module build failed (from ./node_modules/postcss-loader/src/index.js):
    2024免费MAC苹果电脑系统优化软件CleanMyMac X
    二、数据库查询语句(多表查询篇)
    Nginx实现四层代理与七层代理
    网络安全新架构:零信任安全
  • 原文地址:https://blog.csdn.net/xuanyuanjiaqi/article/details/139330699
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号