IIS 负载平衡站点重定向到外部服务,但应返回正确的服务器

IIS 负载平衡站点重定向到外部服务,但应返回正确的服务器

我们正在为面向外部和内部的 Web 服务器实现一对网络负载平衡器。我们不打算在任何 NLB 上使用会话状态服务,并且接受如果某个节点出现故障,用户将必须在新服务器上重新进行身份验证,并开始新的会话。

但是我们有一个 ASP.Net4 应用程序,它重定向到外部服务(支付处理器),然后使用静态配置的链接将用户返回到我们面向外部的 URL。

我有两个问题:

  • 当用户付款后返回网站时,有什么方法可以确保他们连接到其会话当前所在的服务器?

  • 当面向内部的 NLB 上的用户完成付款时,该服务将尝试将其返回到外部 NLB。有没有办法拦截并将其重定向回面向内部的集群,然后再重定向到他们的活动会话所在的服务器?

答案1

对于问题 #1,您可以使用 NLBS 亲和性设置。请参阅https://stackoverflow.com/questions/866108/how-to-keep-user-requests-on-the-same-server-when-using-iis-nlb

对于问题 2,有几个选项

  1. 使用分离 DNS 设置。基本上,您将内部 DNS 与外部 DNS 分开设置。内部客户端将使用内部 DNS 并指向内部 NLBS IP,而外部客户端将使用外部 DNS 并指向外部 NLBS IP。
  2. 您的支付处理供应商可能支持以编程方式更改返回 URL。我们使用 PayPal Payflow Pro 产品。它允许我们以编程方式设置返回 URL。如果您的供应商支持此选项,那么您可以使用 ASP.NET 检测请求者的地址是否为内部地址并将其指向正确的 URL。您可以使用以下任一属性来获取请求者的 IP 地址

    HttpContext.Current.Request.UserHostAddress;

    HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"];

相关内容