我正在寻找使用Nginx执行以下操作的方法:
例如
Request URL - http://<<nginx>>/test/001.xml/25
Final URL - http://<<server>>/test/001.xml with header (x-replica: 25)
我的nginx服务器设置为实际服务器的上游。我想知道如何设置Nginx来实现这个目标?
答案 0 :(得分:2)
由于数据存在于请求URI本身内(由nginx中的$uri
变量提供),您可以使用nginx lua模块解析该数据。需要使用lua编译nginx才能使其正常工作,请参阅:openresty's nginx lua module。
您可以使用set_by_lua_block
或set_by_lua_file
directive $uri
作为参数。
在配置中,这看起来像是:
location / {
...
set_by_lua_file $var_to_set /path/to/script.lua $uri;
# $var_to_set would contain the result of the script from this point
proxy_set_header X-Replica $var_to_set;
...
}
在script.lua
我们可以访问$uri
列表中的ngx.arg
变量(参见these docs):
function parse_uri( uri )
parsed_uri = uri
-- Parse logic here
return parsed_uri
end
return parse_uri( ngx.arg[1] )
同样,您可以修改此功能或创建另一个功能以使用更新的$uri
制作变量。