Nginx - 基于IP范围的不同代理传递

时间:2015-04-13 20:06:01

标签: nginx proxy

我有一个案例需要在Nginx中进行不同的代理传递,具体取决于客户端IP地址所属的CIDR。

因此,举例来说,假设我有以下CIDR:

  10.50.0.0/16
  10.51.0.0/16
  10.52.0.0/16

每个客户端地址都需要在Nginx中具有不同的proxy_pass。我该怎么做呢?我对Nginx很新,所以实现这样的事情仍然有点令人困惑。

1 个答案:

答案 0 :(得分:5)

您可以使用Geo module。您的配置看起来会像这样:

geo $upstream  {
    default default_upstream;

    10.50.0.0/16 some_upstream;
    10.51.0.0/16 another_upstream;
}

upstream default_upstream {
    server 192.168.0.1:80;
}

upstream some_upstream {
    server 192.168.0.2:80;
}

upstream another_upstream {
    server 192.168.0.3:80;
}

server {
    ...
    location ... {
        ...
        proxy_pass http://$upstream;
    }
    ...
}
相关问题