如何根据登录用户名重定向到不同的服务器?

如何根据登录用户名重定向到不同的服务器?

我想做的事情似乎应该相当简单。我希望有一个外部地址,并根据用户使用的登录名重定向到多个不同的内部服务器。

也就是说,给定用户 u1、u2、u3 和 u4,我希望他们都登录到www.domain.com,并让用户 u1 和 u2 在内部重定向到internal1.domain.com,将 u3 和 u4 重定向到internal4.domain.com

还应传递已登录的用户,以便内部站点知道哪个用户已登录。内部站点将无法从外部寻址。

我看过佩尔巴尔,这似乎允许我想要的某些功能,但我看不到任何基于登录用户重定向的选项。Mod_proxy似乎也不允许这种级别的控制。

还有什么其他选择,或者我如何才能让上述选项实现我想要的效果?

答案1

事实上,Apache 的 mod_proxy 可以完成您想要的操作。

它的会话粘性从 cookie 值读取;如果所有应用程序服务器都知道用户需要去哪个服务器(我不清楚用户分布是如何决定的,但我们假设它是存储的或可计算的),那么它就很简单。

任何服务器都可以在第一次请求时向用户提供其服务器 cookie。假设 apache 将它们抛出到internal1,但它们应该在 上internal2;cookie 可以SERVERID设置为server.internal2。在第二次请求中,使用以下配置,apache 将看到 cookie 并将用户发送到BalancerMember附加到 cookie 中定义的路由的后端。

<Proxy balancer://domain>
    BalancerMember http://internal1.domain.com route=internal1
    BalancerMember http://internal2.domain.com route=internal2
</Proxy>

ProxyPass / balancer://domain/ stickysession=SERVERID
ProxyPassReverse / balancer://domain/

答案2

好吧,我希望你有一些编程知识......

最简单的方法是使用基本的 Web 服务器并使用 php/mysql 创建登录脚本。

当用户登录时,您可以使用header(Locaction: internalx.domain.com);将用户发送到不同的页面。

为了保存用户数据,您可以简单地使用 cookie 或(更高级的)cookie 或一次性链接到 internal.domain.com 服务器,并对网站使用相同的数据库。

您可以通过 Google 搜索登录脚本或在 stackoverflow.com 上询问更多信息。但我认为既然您已经拥有内部网站,那么您或您认识的人肯定有编程经验。

相关内容