我想要做的事似乎应该相当简单。 我想有一个外部地址,并根据用户使用的loginredirect到多个不同的内部服务器。
也就是说,给定用户u1,u2,u3和u4,我希望他们都login到www.domain.com ,并将用户u1和u2内部redirect到internal1.domain.com ,u3和u4redirect到internal4.domain.com 。
login用户也应该通过,以便内部网站知道哪个用户login。内部网站将不会在外部寻址。
我已经看了Perlbal ,这似乎允许一些我想要的,但我看不到任何选项来redirect基于login的用户。 Mod_proxy也似乎不允许这个级别的控制。
还有什么其他的select,或者我怎么能做出上述的select做我想要的?
实际上,Apache的mod_proxy可以完成你想要的function。
会话粘度从cookie值读取; 如果所有的应用服务器都知道用户需要去哪个服务器(我不太清楚用户分配是如何决定的,但是我们假定它是存储或可计算的),那么这很简单。
任何服务器都可以在第一个请求中为用户提供服务器cookie。 说apache把它们抛给internal1 ,但是它们应该在internal2 ; 该cookie可以是像SERVERID设置为server.internal2 。 在第二个请求中,使用下面的configuration,apache将看到cookie,并将用户发送到连接到cookie中定义的路由的BalancerMember后端。
<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/
那么我希望你有一些编程知识…
最简单的方法是使用基本的Web服务器,并使用PHP / MySQL创buildlogin脚本。
当用户login时,可以使用header(Locaction: internalx.domain.com); 将用户发送到不同的页面。
要保留用户数据,您可以简单地使用cookie或(更高级的)cookie或一次性链接到internal.domain.com服务器,并为站点使用相同的数据库。
你可以谷歌login脚本或要求在stackoverflow.com更多的信息。 但是我认为,既然你已经有了内部网站,你或者你认识的人都有编程经验。