HAProxyconfiguration阻止子url的IP

我是HAProxy的新手。 我想限制所有访问一个子URL,但不能从less数IP访问。 我的HAProxy的实现如下,它不阻止任何IP / URLs

# Listen to port 80. Throw a 301 redirect to port 443 frontend Listen80 bind *:80 redirect scheme https code 301 if !{ ssl_fc } # List to port 443. Redirect to appropriate backend based on URL frontend Listen443 bind *:443 ssl crt /etc/ssl/certs/examplesslpem %> acl web_url path_beg /abc /xyz acl web_url path_beg /efg /xy acl batch_url path_beg /h /ga acl network_allowed src example.xyz.com acl resticted_pages path_beg /abc/qaz/ http-request allow if resticted_pages network_allowed use_backend BATCH if batch_url use_backend SVC if svc_url use_backend WEB if web_url # Listen to port 8080. Pass through to WEB backend frontend Listen8080 bind *:8080 use_backend WEB backend WEB mode http balance roundrobin option httpclose cookie SERVERIDWEB insert indirect nocache secure option forwardfor http-request set-header X-Forwarded-Port %[dst_port] http-request add-header X-Forwarded-Proto https if { ssl_fc } reqrep ^([^\ ]*\ /)abc[/]?(.*) \1\2 server app-1 example-app1.com:8080 check cookie app1web server app-2 example-app2.com:8080 check cookie app2web server app-3 example-app3.com:8080 check cookie app3web server app-4 example-app4.com:8080 check cookie app4web server app-5 example-app5.com:8080 check cookie app5web 

这绝对不会做你想要的。

 http-request allow if resticted_pages network_allowed 

请求是默认允许的。

请注意, http-request allow 不是 http-request deny的对立面。 在这里, allow意味着不处理任何后续的http-request指令,而是允许这个请求按原样进行

它看起来像你想否定,如果restricted_pa​​ges是真的,network_allowed是假的,看起来像这样:

 http-request deny if restricted_pages !network_allowed 

http://cbonte.github.io/haproxy-dconv/1.6/configuration.html#4-http-request

还请注意,这也可能不会做你想要的:

 acl network_allowed src example.xyz.com 

这将在启动时将“示例”主机名parsing为IP地址。 ACL的行为就像在configuration中使用了IP地址一样。