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