Nginx重写请求路径与上游

时间:2018-10-09 18:34:43

标签: nginx url-rewriting

我有几个上游,应该平衡请求。 问题是在代理请求之前,我需要为每个上游重写URL。

例如,我有要求/ini/tial/path。如果请求将发送到上游1,则应将其转换为upstream1.nowhere:1111/u1/ini/tial/path,如果请求将发送到上游2,则应将其转换为upstream2:2222/u2/ini/tial/path

这可以在nginx中实现吗?我发现了类似的问题here,但是它首先重写url,然后代理请求,这使它对所有上游服务器使用相同(重写)的url。就我而言,重写规则取决于实际的上游服务器。

1 个答案:

答案 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