You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

HAProxy ACL配置:如何基于目标端口或地址路由流量

我之前刚好处理过几乎一模一样的HAProxy路由需求,给你一套直接可用的配置方案,很快就能解决问题:

第一步:定义直接转发的后端

先在HAProxy配置文件里新增一个专门指向192.168.1.10:8080的后端,这样我们有明确的目标可以转发:

backend direct-to-10-8080
    server target-server 192.168.1.10:8080 check  # check是可选参数,用来定期检测后端服务器可用性

第二步:在前端配置ACL和路由规则

找到你当前的frontend区块(比如叫main或者其他,根据你的现有配置来),添加两个ACL和对应的路由逻辑:

frontend main
    bind *:80  # 替换成你实际监听的端口,比如443如果是HTTPS服务
    # 第一个ACL:精准匹配来自客户端192.168.1.106的请求
    acl client_from_106 src 192.168.1.106
    # 第二个ACL:匹配请求的目标是192.168.1.10:8080(根据实际请求场景选一种)
    # 场景1:客户端请求的Host头是192.168.1.10:8080(比如浏览器直接输入这个地址)
    acl target_10_8080 hdr(host) -i 192.168.1.10:8080
    # 场景2:如果不需要匹配Host头,仅根据客户端IP直接转发,可省略第二个ACL
    
    # 当同时满足两个ACL条件时,使用我们定义的直接转发后端
    use_backend direct-to-10-8080 if client_from_106 target_10_8080
    # 默认情况下,仍用原有的privoxy-back后端处理其他请求
    default_backend privoxy-back

关键说明

  • src是HAProxy用来匹配客户端源IP的关键字,这个ACL会精准拦截来自192.168.1.106的所有请求。
  • hdr(host)用来匹配HTTP请求头里的Host字段,-i参数是忽略大小写,确保匹配更宽松。
  • use_backend的优先级高于default_backend,所以只要满足ACL条件的请求,会直接跳转到我们定义的后端,完全绕过privoxy-back。

配置验证与生效

修改完配置后,先检查语法是否正确:

haproxy -f /etc/haproxy/haproxy.cfg -c

如果输出Configuration file is valid,就可以重启HAProxy让配置生效:

systemctl restart haproxy  # 适用于systemd系统,其他系统用对应的重启命令

内容的提问来源于stack exchange,提问作者me2017

火山引擎 最新活动