access_by_lua nginx

news/2025/3/12 9:30:25/文章来源:https://www.cnblogs.com/guanchaoguo/p/18766723

根据具体的post json data 转发

location ~*\/api/v4/(objects|warning)(.*)/ {access_by_lua 'local transfer_request_query = ngx.req.get_uri_args()local res = ngx.location.capture("/auth_get", { args = transfer_request_query })ngx.header.content_type = "application/json;charset=utf8"local json = require "cjson";if res.status == ngx.HTTP_OK thenreturnendif res.status == 401 thenngx.status = res.statusngx.say(res.body)ngx.exit(401)endif res.status == 403 thenngx.say("haha 403")ngx.exit(ngx.HTTP_FORBIDDEN)endif res.status == 503 thenngx.exit(ngx.HTTP_METHOD_NOT_IMPLEMENTED)endngx.exit(ngx.HTTP_INTERNAL_SERVER_ERROR)--ngx.exit(507)';

验证函数

location /access-test {access_by_lua_block {-- 这里是Lua代码ngx.log(ngx.INFO, "Entering access_by_lua_block")-- 假设我们有一个变量表示用户是否已认证local is_authenticated = check_user_authentication()-- 如果用户未认证,则返回403 Forbidden响应if not is_authenticated thenngx.status = ngx.HTTP_FORBIDDENngx.say("Access Denied")ngx.exit(ngx.HTTP_FORBIDDEN)returnend-- 如果用户已认证,则允许请求继续处理ngx.log(ngx.INFO, "User is authenticated, allowing access")}# 其他Nginx配置...# 例如,代理请求到后端服务器proxy_pass http://backend_server;
}# 假设check_user_authentication是一个在外部定义的Lua函数
# 它检查用户是否已认证,并返回布尔值
function check_user_authentication() {-- 这里应该实现你的认证逻辑-- 例如,检查HTTP头部、Cookie、JWT等return true  -- 假设用户已认证
end

具体转发

location ^~ /api/test{proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;proxy_set_header Host $http_host;proxy_set_header X-NginX-Proxy true;proxy_set_header Cookie $http_cookie;proxy_redirect off;proxy_http_version 1.1;proxy_set_header Connection "";set $backend "http://xxxx.server";access_by_lua_block {ngx.req.read_body()local body = ngx.req.get_body_data()local cjson = require "cjson"local data = cjson.decode(body)local gateway_id = data["gateway_id"]if gateway_id == "xxxxxxx" thenngx.var.backend = "http://xxxxx"end}proxy_pass $backend;break;
}

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

qt creator 配置clang-format 代码风格

1 Qt creator配置格式化代码插件clang-format 2 clang-format的配置 qt creator上面的选项卡:帮助>关于插件,在c++的那一栏中勾选Beautifier,然后重启qt creator的软件。上方的选项卡:编辑>Preferences>美化器 选择工具为ClangFormat在Clang Format的那一栏中,选…

利用Xshell进行文件传输

1.利用Xshell连接靶机或服务器 新建会话,(连接这里)输入ip,选择端口,名字随便写 点击用户身份验证,输入管理员用户和密码 点击连接 进入靶机终端(可能还需要确认一次密码)2.提权与修改密码 如果不是root权限,可以通过su root提权 root权限下直接通过passwd修改密码 如果是…

です(desu)的意思

“です”是日语中常用的表达方式,主要有以下几个含义和使用场景: 1. 表达断定:在日语中,“です”相当于汉语的“是”,用于断定句的结尾,表示对前面所述内容的肯定。例如,“これは本です。”(这是书。)2. 表达尊敬:在表达尊敬的场合,使用“です”可以使语气显得更加礼…

2025-03-12 随笔

今天周三,天气不错,记

线上测试木舟物联网平台之如何通过HTTP网络组件接入设备

一、概述 木舟 (Kayak) 是什么?木舟(Kayak)是基于.NET6.0软件环境下的surging微服务引擎进行开发的, 平台包含了微服务和物联网平台。支持异步和响应式编程开发,功能包含了物模型,设备,产品,网络组件的统一管理和微服务平台下的注册中心,服务路由,模块,中间服务等管理。还…

经过 10 亿级性能验证的隐私计算开源利器

在数据驱动的时代,我们每天都在产生大量数据:购物记录、健康信息、社交关系……这些数据蕴含巨大价值,但也伴随着隐私泄露的风险。 试想一下:医院希望联合研究某种疾病,但患者数据无法直接共享。 银行想合作分析反欺诈信息,但客户隐私数据必须严格保护。 AI 公司需要使用…

值得推荐的IT公司名单(国企篇)

大家好,今天我们来盘点一下值得推荐的国企,这些企业在行业内具有举足轻重的地位,不仅主营业务突出,福利待遇优厚,尤其是研发岗位的薪资区间,更是让人眼前一亮。十大顶尖央企国企,待遇优厚如天花板级别!(排名不分先后)1、中国烟草总公司 人家都说能成为烟草总公司的一…

Entity Framework Core 数据库迁移

EF Core 通过两种方式来保持**模型**和**数据库架构**同步。 迁移 Code First 反向工程 Db First 管理迁移 通过EF Core 命令行工具来管理迁移 安装EF Core 命令行工具# 安装 dotnet-ef dotnet tool install --global dotnet-ef# 验证安装 dotnet ef# 更新工具 dotnet tool upd…

Roslyn 分析器已知问题 传递项目属性时将忽略分号之后的内容

本文记录 Roslyn 分析器、源代码生成器的已知问题,通过CompilerVisibleProperty 传递值时,所有在 `;`、`#` 和换行符之后的字符都会被忽略相关问题链接:https://github.com/dotnet/roslyn/issues/43970 https://github.com/dotnet/roslyn/issues/51692此问题由 walterlv 发现…

Avalonia 已知问题 继承滚动条将让里层控件无法获得无穷大空间

本文记录 Avalonia 的一个已知问题,如果有代码里面编写一个类型继承 ScrollViewer 类型,然后这个类型里面啥都不做。那将会导致所有放在此滚动条里面的控件无法获取无穷大的空间,其宽高无法撑开,被限定为上层容器尺寸复现步骤如下:新建一个 FooScrollViewer 类型,让其继承…

读DAMA数据管理知识体系指南17数据存储和操作治理

读DAMA数据管理知识体系指南17数据存储和操作治理1. 管理数据库性能 1.1. 数据库的性能取决于两个相互依赖的因素:可用性和响应速度 1.2. 性能包括确保空间的可用性、查询优化以及其他能使数据库以有效的方式返回数据的因素1.2.1. 如果没有可用性,就无法衡量数据库的性能1.2.…