在Nginx位置部分调用外部api

在Nginx位置部分调用外部api,nginx,Nginx,我试图在nginx中动态解析代理传递值(通过webapi) 我需要下面这样的东西 示例取自: 所以,我的问题是,是否可以发出HTTP请求或编写CallWebAPI之类的方法 我知道这可能是一种不好的做法,但我正在处理的网站有数千个web URL,它们被映射为键值对,其中90%不遵守任何特定的正则表达式规则。所以我有一个内容映射数据库,我需要动态获取包含内容的传入url 我试图使用一个非常轻的web服务从redis中查找url,并返回代理url 这是一个有效的场景,还是nginx中有其他类似的内置

我试图在nginx中动态解析代理传递值(通过webapi)

我需要下面这样的东西
示例取自:

所以,我的问题是,是否可以发出HTTP请求或编写CallWebAPI之类的方法

我知道这可能是一种不好的做法,但我正在处理的网站有数千个web URL,它们被映射为键值对,其中90%不遵守任何特定的正则表达式规则。所以我有一个内容映射数据库,我需要动态获取包含内容的传入url

我试图使用一个非常轻的web服务从redis中查找url,并返回代理url


这是一个有效的场景,还是nginx中有其他类似的内置解决方案?

我怀疑“纯”nginx可以做到这一点,但这肯定可以通过方法或借助方法来实现。例如:

resolver 8.8.8.8;
location ~/proxy-pass-uri(/.*)$ {
    set $url $1;
    set $proxy "";
    access_by_lua_block {
       res = ngx.location.capture("http://localhost:8081/resolver?url=" .. ngx.var.url)
       ngx.var.proxy = res.body
    }
    proxy_pass $proxy$url;
}

还有一个(,)可以执行子请求(),但我从未使用过它,也不知道它是否可以这样使用。

JavaScript one看起来很有希望,我会检查一下,然后让您知道,谢谢!
resolver 8.8.8.8;
location ~/proxy-pass-uri(/.*)$ {
    set $url $1;
    set $proxy "";
    access_by_lua_block {
       res = ngx.location.capture("http://localhost:8081/resolver?url=" .. ngx.var.url)
       ngx.var.proxy = res.body
    }
    proxy_pass $proxy$url;
}