根据路径创建后端

时间:2017-06-08 15:49:21

标签: haproxy consul

我在面向微服务注册表Consul的前面使用HAProxy作为代理服务器。我使用HAProxy将流量路由到特定的后端,根据它是什么类型的节点(它运行什么服务,它是活动的,它是什么版本,等等)

到目前为止,我可以使用HAProxy来查看路径的开头,并将其路由到一个后端,例如路径以/ blog开头,它将转到博客后端。

我的问题是,当有多个标准来选择后端时,我应该如何创建所述后端?我能以某种方式筑巢吗?我是否应该详尽列出所有标准组合并为其添加后端?

1 个答案:

答案 0 :(得分:0)

backend是一个或多个服务器(服务,端点),它们都可以处理同一组请求。您不会根据发送给他们的内容来定义后端,而是根据可以发送给他们的内容来定义后端。

例如,如果你有一组可以提供多种静态资产的服务器,你就不会为javascript做一个后端,另一个用于CSS,另一个用于图像。你做了一个。

backend static-assets
    mode http
    server static-1 203.0.113.100:80
    server static-2 203.0.113.200:80

然后将适当的请求路由到该后端。

您可以通过多种方式实现这一目标。

匿名ACL,每个模式一个:

frontend main
    mode http
    bind :80
    use_backend static-assets if { path_end .js }
    use_backend static-assets if { path_end .css }
    use_backend static-assets if { path_end .png }

具有显式||(逻辑OR)的匿名ACL:

frontend main
    mode http
    bind :80
    use_backend static-assets if { path_end .js } || { path_end .css } || { path_end .png }

或使用命名ACL。命名ACL中的每一行都是OR - 只需要匹配一行以匹配ACL。

frontend main
    mode http
    bind :80
    acl is_static path_end .js
    acl is_static path_end .css
    acl is_static path_end .png
    use_backend static-assets if is_static

或使用这些的任意组合。

要匹配的第一个use_backend指令是请求将要发送到的后端 - 它们按照定义的顺序进行处理。不#34;筑巢"应该是必要的。