如何解决HAProxy 1.5-使用地图将路径链接到后端
基本上,正如标题所示。我试图简化我的HAProxy配置文件,并发现有关map
函数的信息。现在,我正在尝试将其设置为与特定后端的路径匹配。该文件的原始设置如下所示:
#This is a cleaned up version,as I'm not comfortable putting actual paths and server names online
#That said,this is the same basic format
frontend http
maxconn 2000
bind 0.0.0.0:5110
acl employee-webserver path_reg -i /test/employee/.*
use_backend servers-employee-webserver if employee-webserver
acl employee-internal_api path_reg -i /test/internal_api/employee/.*
use_backend servers-employee-internal_api if employee-internal_api
backend servers-employee-webserver
balance leastconn
cookie TEST insert
http-request set-header X-Forwarded-Proto https if { ssl_fc }
server server1.test.com 127.0.0.1:9000 cookie S1 check inter 30s fall 1 rise 1
backend servers-employee-internal_api
balance leastconn
cookie TEST insert
reqrep ^(.+)\ /test/internal_api/employee/(.*?$) \1\ /\2
server server1.test.com 127.0.0.1:8000 cookie S1 check inter 30s fall 1 rise 1
有问题的服务包含多个部分,客户端使用的Web服务器和内部API。我们也有其他使用此相同设置的服务,并且将在此文件中。
我发现我可以使用一个映射文件来简化此过程,将相应后端的路径和名称提取到一个单独的文件中:
frontend http
maxconn 2000
bind 0.0.0.0:5110
use_backend bk_%[base,map_beg(/apps/haproxy/config/haproxy.map)]
backend servers-employee-webserver
balance leastconn
cookie TEST insert
http-request set-header X-Forwarded-Proto https if { ssl_fc }
server server1.test.com 127.0.0.1:9000 cookie S1 check inter 30s fall 1 rise 1
backend servers-employee-internal_api
balance leastconn
cookie TEST insert
reqrep ^(.+)\ /test/internal_api/employee/(.*?$) \1\ /\2
server server1.test.com 127.0.0.1:8000 cookie S1 check inter 30s fall 1 rise 1
映射文件haproxy.map所在的位置:
server1.test.com:5110/test/employee servers-employee-webserver
server1.test.com:5110/test/internal_api/employee servers-employee-internal_api
但是,当我理解为键server1.test.com:5110/test/employee/home
应该认为这是有效的映射时,转到server1.test.com:5110/test/employee
时仍然出现503错误。我尝试删除服务器名称,所以只有路径,尝试包括协议(http),并尝试在路径末尾添加通配符。这些都没有影响。
- 我的地图文件在做什么错?这甚至是haproxy 1.5的功能吗?
- 如果我可以使其正常运行,我将在DNS
employee_service.company.com
后面托管haproxy实例,该DNS指向端口5110上的haproxy。我假设必须替换服务器。映射文件中的名称,其中DNS名称为1。正确吗? - 假设每个人都需要一个cookie,一个X-Forwarded Proto标头以及一个不同的regrep,是否有可能在使用映射文件的后端进行类似的设置?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。