haproxy auth'ed 基于用户的后端路由
haproxy auth'ed user based backend routing
我是 haproxy 的新手,但已经非常喜欢它了。马上我有一个特殊的用例,我还没有找到好的方法。
问题:是否可以根据当前经过身份验证的用户路由到后端服务器?
类似...
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 的正确 FETCH 语法是什么?
背景(=这些是我必须处理的限制):
- 有几个上游http代理(squid)
- 有几个用户(~50)
- 每个用户都分配给一个代理(即 "Joe Doe" 必须使用 "upstream-squid-5")
- 但是分配可以随时更改并且
- 本地代理配置(Windows 通过组策略,IOS 通过配置文件)无法更改(足够快)
(以上这些我无法掌握,我们不需要讨论;))
第一次尝试是通过代理自动配置文件 (PAC),该文件可以在服务器上更改并由客户端自动轮询。 (因此每个用户只需要部署一次 pac 文件)
但是:某些设备更新时间太长,因此被丢弃为不可靠
我的研究让我找到了 HAPROXY。我的想法是使用内置的地图功能来路由到正确的后端。但是我找不到合适的获取源来区分请求来源。
我知道userlist/auth可以设
正如我所说,我是新手,找不到任何基于用户的路由。
我们将不胜感激任何帮助或指出正确的方向。
此外,如果您知道更好的解决问题的方法,我将不胜感激。
谢谢!
我觉得把同一个后台的用户分到一个组里,然后给他们写一个ACL比较容易
我创建了 3 个示例用户组,命名为可选,然后将用户分配到您想要的组。容易,对吧?在前端,我们必须首先检查所有用户是否是有效(授权)用户。然后我们为每个用户组创建每个 ACL,然后将它们路由到正确的后端。
它没有经过测试,但我相信它会工作,并且会使用 HAProxy 的映射功能进行清理。
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
我是 haproxy 的新手,但已经非常喜欢它了。马上我有一个特殊的用例,我还没有找到好的方法。
问题:是否可以根据当前经过身份验证的用户路由到后端服务器?
类似...
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 的正确 FETCH 语法是什么?
背景(=这些是我必须处理的限制): - 有几个上游http代理(squid) - 有几个用户(~50) - 每个用户都分配给一个代理(即 "Joe Doe" 必须使用 "upstream-squid-5") - 但是分配可以随时更改并且 - 本地代理配置(Windows 通过组策略,IOS 通过配置文件)无法更改(足够快)
(以上这些我无法掌握,我们不需要讨论;))
第一次尝试是通过代理自动配置文件 (PAC),该文件可以在服务器上更改并由客户端自动轮询。 (因此每个用户只需要部署一次 pac 文件) 但是:某些设备更新时间太长,因此被丢弃为不可靠
我的研究让我找到了 HAPROXY。我的想法是使用内置的地图功能来路由到正确的后端。但是我找不到合适的获取源来区分请求来源。 我知道userlist/auth可以设
正如我所说,我是新手,找不到任何基于用户的路由。
我们将不胜感激任何帮助或指出正确的方向。
此外,如果您知道更好的解决问题的方法,我将不胜感激。
谢谢!
我觉得把同一个后台的用户分到一个组里,然后给他们写一个ACL比较容易
我创建了 3 个示例用户组,命名为可选,然后将用户分配到您想要的组。容易,对吧?在前端,我们必须首先检查所有用户是否是有效(授权)用户。然后我们为每个用户组创建每个 ACL,然后将它们路由到正确的后端。
它没有经过测试,但我相信它会工作,并且会使用 HAProxy 的映射功能进行清理。
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