Nginx - 基于 IP 范围的不同代理传递
Nginx - Different proxy pass based on IP ranges
我有一个案例,我需要在 Nginx 中执行不同的代理传递,具体取决于客户端 IP 地址所属的 CIDR。
例如,假设我有以下 CIDR:
10.50.0.0/16
10.51.0.0/16
10.52.0.0/16
每个客户端地址在 Nginx 中都需要有不同的 proxy_pass。我该怎么做呢?我是 Nginx 的新手,所以实现这样的事情仍然有点令人困惑。
您可以使用 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;
}
...
}
我有一个案例,我需要在 Nginx 中执行不同的代理传递,具体取决于客户端 IP 地址所属的 CIDR。
例如,假设我有以下 CIDR:
10.50.0.0/16
10.51.0.0/16
10.52.0.0/16
每个客户端地址在 Nginx 中都需要有不同的 proxy_pass。我该怎么做呢?我是 Nginx 的新手,所以实现这样的事情仍然有点令人困惑。
您可以使用 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;
}
...
}