首页 > 解决方案 > HAProxy 转发请求规则

问题描述

我有一个要求:

Incoming request- <haproxyIP>:8080/proxy/component/upgrade
Forward to- <serverIP>:8443/component/upgrade

Incoming request- haproxyIP:8080/proxy/component/restore
Forward to- <serverIP>:8443/component/restore

我目前将我的前端和后端编写为:

frontend http-in
    acl acl_upgrade path_sub /proxy/component/upgrade
    use_backend b_upgrade if acl_upgrade
    acl acl_restore path_sub /proxy/component/restore
    use_backend b_restore if acl_restore

backend b_upgrade
    mode http
    http-request set-path /component/upgrade
    server s1 10.1.1.1:8443 ssl verify none

backend b_restore
    mode http
    http-request set-path /component/upgrade
    server s2 10.1.1.1:8443 ssl verify none

除了编写两个后端之外,是否可以根据 URL 的部分使用正则表达式之类的只有一个后端,例如:

Incoming request- <haproxyIP>:8080/proxy/<extracted part>
Forward to- <serverIP>:8443/<extracted part>

是否有可能在 haproxy 中做这样的事情?

标签: haproxy

解决方案


您可以尝试使用地图。下面的示例未经测试,但它显示了这个想法。

url4setpath.cfg

# map url4setpath
/proxy/component/upgrade /component/upgrade
/proxy/component/restore /component/restore
frontend http-in

    use_backend b_default

backend b_upgrade
    mode http
    http-request set-path path,map_beg(url4setpath.cfg,/)
    server s1 10.1.1.1:8443 ssl verify none

有关地图的更多信息HAProxy 地图简介


推荐阅读