我有几个上游,应该平衡请求。 问题是在代理请求之前,我需要为每个上游重写URL。
例如,我有要求/ini/tial/path
。如果请求将发送到上游1,则应将其转换为upstream1.nowhere:1111/u1/ini/tial/path
,如果请求将发送到上游2,则应将其转换为upstream2:2222/u2/ini/tial/path
这可以在nginx中实现吗?我发现了类似的问题here,但是它首先重写url,然后代理请求,这使它对所有上游服务器使用相同(重写)的url。就我而言,重写规则取决于实际的上游服务器。
答案 0 :(得分:0)
不同的端口绝对不是问题,但是路径上的差异似乎令人沮丧。
后端在Nginx中定义为
upstream backend_name {
server 1.1.1.1:1111;
server 2.2.2.2:2222;
}
,相应的代理指令看起来像proxy_pass http://backend_name/path
。请注意,后端名称是通过名称而不是变量来引用的。通常,proxy_pass
非常灵活,可以在其中使用变量,但是无法确定在请求处理期间选择了哪个服务器。 (之后 是可能的,在登录时– $upstream_addr varaible
)