【发布时间】:2015-04-13 20:06:01
【问题描述】:
我有一个案例,我需要根据客户端 IP 地址所属的 CIDR 在 Nginx 中执行不同的代理传递。
例如,假设我有以下 CIDR:
10.50.0.0/16
10.51.0.0/16
10.52.0.0/16
这些客户端地址中的每一个都需要在 Nginx 中具有不同的 proxy_pass。我该怎么做呢?我对 Nginx 很陌生,所以实现这样的事情仍然有点令人困惑。
【问题讨论】:
我有一个案例,我需要根据客户端 IP 地址所属的 CIDR 在 Nginx 中执行不同的代理传递。
例如,假设我有以下 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;
}
...
}
【讨论】: