HAProxy配置根路径仅指定IP段访问、子目录允许所有IP访问的方法
HAProxy 1.8.19 访问控制正确配置
原有配置问题排查
你原来的配置http-request deny if { path -i -m beg / } !{ src 10.10.20.0/24 }无法达到预期的核心原因是:path -i -m beg /会匹配所有以/开头的路径(站点所有请求都符合这个匹配规则),会直接拦截/tempDownload/路径下的所有公网请求。
正确配置方案
根据实际需求分两种场景选择:
场景1:除/tempDownload/路径允许所有IP访问外,站点其他所有路径(含根路径/)仅允许10.10.20.0/24网段访问
这是原有配置隐含的需求,对应规则如下:
http-request deny if !{ src 10.10.20.0/24 } !{ path -i -m beg /tempDownload/ }
规则逻辑:仅当请求IP不在白名单网段 且 请求路径不是以/tempDownload/开头时,才触发拒绝操作,完全匹配需求。
场景2:仅精确限制根路径/的访问权限,其他任意路径(包括/tempDownload/和其他子路径)都无访问限制
如果只需要控制根路径的访问,对应规则如下:
http-request deny if { path -i / } !{ src 10.10.20.0/24 }
规则逻辑:只有请求路径精确等于/且IP不在白名单网段时才拒绝,不会影响任何子路径的访问。
生效说明
将上述规则添加到对应站点的frontend或listen配置段中,放在use_backend规则之前即可,配置修改后执行haproxy -c -f /etc/haproxy/haproxy.cfg检查语法无误后重载服务即可生效。
内容的提问来源于stack exchange,提问作者Emre Hayta
相关产品推荐
相关产品推荐

