如何在nginx中实现此行为

  • 本文关键字:实现 nginx nginx
  • 更新时间 :
  • 英文 :


在Nginx中需要什么配置才能实现以下行为:

每当收到请求时,应将其转发给应用程序a;如果应用程序A返回{"allowed":true}作为响应,同样的请求应该转发给应用程序B,应用程序B的响应应该返回给客户端。但是,如果应用程序A返回{"allowed": false}在响应中,服务器应该返回一个状态码为401的响应。

像这样:

server {
listen  80;
location / {
# forword request to App-A;
proxy_pass https://app-A.dev/;
# Read the response
if response['allowed'] == true;
# forword it to application B
proxy_pass https://app-B.dev/;
else:
return '401';
}   
}

我根本无法测试这个,因为我没有得到与您的类似的环境,但是lua脚本应该是这样的:

http {
lua_shared_dict allow_dict 1m;
server {
listen 80;
location / {
proxy_pass https://app-A.dev/;
header_filter_by_lua_block {
local allow = ngx.resp.get_headers()['allow']
if allow == 'true' then
ngx.ctx.allow = true
end
}
body_filter_by_lua_block {
if ngx.ctx.allow then
ngx.var.proxy_pass = https://app-B.dev/
end
}
}
}
}

在这里查看更多关于模块的信息

相关内容

  • 没有找到相关文章

最新更新