【问题标题】:Nginx rewrite request path with upstreamsNginx 用上游重写请求路径
【发布时间】:2019-03-14 14:29:36
【问题描述】:

我有几个上游需要平衡请求。 问题是在代理请求之前,我需要为每个上游重写不同的 url。

例如,我请求/ini/tial/path。如果请求发送到upstream1,则转换为upstream1.nowhere:1111/u1/ini/tial/path,如果请求发送到upstream2,则转换为upstream2:2222/u2/ini/tial/path

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

【问题讨论】:

    标签: nginx url-rewriting


    【解决方案1】:

    不同的端口绝对不是问题,但路径不同似乎很糟糕。

    后端在 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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-08-06
      • 2018-12-12
      • 1970-01-01
      • 1970-01-01
      • 2019-08-27
      • 1970-01-01
      相关资源
      最近更新 更多