运行 if 之前的 access_by_lua

Run an access_by_lua before an if

我正在尝试从 api 中获取一些文本,如果它等于某个值,则代理传递。经过一些测试,我发现 access_by_lua 是在 if 语句之后执行的。

这是我当前的代码:

set $protectione 'disabled';

        access_by_lua_block {
local http = require "resty.http"
local httpc = http.new()

local res, err = httpc:request_uri("http://127.0.0.1/ddos/fw.json", { method = "GET" })
ngx.var.protectione = res.body

        }



   if ( $protectione = 'disabled' ) {

     proxy_pass http://backend;
       set $allowreq 1;

   }   

我的问题有替代方案吗?

你一定要看看下一篇tutorial and this post

您不了解 nginx 请求处理阶段。

Nginx 指令没有顺序执行。

ifset 指令在 rewrite 阶段工作,该阶段在 access 阶段之前处理。