首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >基于代理用户的后端路由

基于代理用户的后端路由
EN

Stack Overflow用户
提问于 2019-11-02 13:44:07
回答 1查看 1.3K关注 0票数 2

我是新手,但我已经非常喜欢它了。现在,我有一个特殊的用例,我还没有找到一个好的方法。

问:是否可以根据当前通过身份验证的用户将其路由到后端服务器?

就像..。

代码语言:javascript
复制
userlist EXAMPLEORG
 user bob password bob123
 user alice password alice987

frontend https
 bind *:443
 mode tcp
 ...
 use_backend a-servers if { CURRENT_USER bob }
 use_backend b-servers if { CURRENT_USER alice }

,但是(伪代码)CURRENT_USER的正确获取语法是什么?

背景(=这些是我必须使用的约束):--有几个上游http代理(squid) --有几个用户(~50) --每个用户都被分配给一个代理(即"Joe Doe“必须使用”上游-squid-5“),但是分配可以在任何时候改变,并且本地代理配置(通过组策略,IOS via profile)不能更改(足够快)。

(以上这些观点我都无能为力,我们不需要讨论这些问题;)

第一次尝试是通过代理自动控制文件(PAC),该文件可以在服务器上更改,并将由客户端自动轮询。(因此,只有pac文件必须在每个用户上部署一次),但是:某些设备需要很长时间才能进行更新,因此这是不可靠的。

我的研究把我带到了HAPROXY。我的想法是使用内置的地图功能路由到右后端。但是我找不到一个合适的提取源来区分请求的来源。我知道可以设置userlist/auth。

正如我所说的,我对此很陌生,无法找到任何基于用户的路由。

任何帮助或指向正确的方向将是非常感谢的。

此外,如果你知道一个更好的解决办法,我将非常感谢。

谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-11-03 16:23:05

我认为将同一后端的用户放在一个组中比较容易,然后为他们编写一个ACL。

我已经创建了3个示例用户组,命名为可选,然后将用户分配给您想要的组。别紧张,对吧?在前端,我们必须首先检查所有用户是否是有效的(auth‘’ed)用户。然后为每个用户组创建每个ACL,然后将它们路由到后端。

它没有经过测试,但我相信它会工作,并将清除与HAProxy的地图功能。

代码语言:javascript
复制
userlist user
  group ube_1
  group ube_2
  group ube_3

  user bob password ... groups ube_1
  user alice password ... groups ube_2

frontend
  ...
  acl is_authed_user http_auth_group(user)
  http-request auth realm httpauth unless is_authed_user

  acl is_be_1 http_auth_group(user) ube_1
  acl is_be_2 http_auth_group(user) ube_2

  use-backend be_1 if is_be_1
  use-backend be_2 if is_be_2
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58671668

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档