我在面向微服务注册表Consul的前面使用HAProxy作为代理服务器。我使用HAProxy将流量路由到特定的后端,根据它是什么类型的节点(它运行什么服务,它是活动的,它是什么版本,等等)
到目前为止,我可以使用HAProxy来查看路径的开头,并将其路由到一个后端,例如路径以/ blog开头,它将转到博客后端。
我的问题是,当有多个标准来选择后端时,我应该如何创建所述后端?我能以某种方式筑巢吗?我是否应该详尽列出所有标准组合并为其添加后端?
答案 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;筑巢"应该是必要的。