反向代理——根据IP路由到同一台机器

Reverse proxy - route to the same machine based on IP

假设我有一个负载均衡器(Nginx 或其他,没关系),我希望它根据 IP 路由到一台机器。 IP 在配置时未知。因此,例如,我在机器 m1 和 m2 前面有一个负载均衡器。来自 IP10 的请求被路由到 m1,来自 IP10 的所有后续请求也被路由到 m1。另一个请求来自 IP11,它被路由到 m2,所有来自 IP11 的后续请求也被路由到 m2。

这可能吗,如果可能怎么办?

根据您的描述,我了解到您对来自特定 IP 的第一个请求的路由位置没有特定要求,只要所有后续请求都遵循相同的路由即可。

如果是这种情况,您要执行的操作是称为 session stickinesspersistent session 的负载平衡方法。

在 nginx 中,您可以通过以下配置实现:

http {
    upstream mybackend {
        ip_hash;
        server m1.ltd;
        server m2.ltd;
     }

     server {
         listen 80;

         location / {
             proxy_pass http://mybackend;
         }
     }
}

这里是link到具体的nginx docs