1

我在 HAPROXY 中定义了一些规则

acl want_server_oa path_dir ServerOA    
acl serveroa_avail nbsrv(ServerOA) ge 1
use_backend ServerOA if want_server_oa serveroa_avail 

acl is_root hdr_dom(host) -i mydomain.com
use_backend domainRoot if is_root

前 3 条规则设置为将流量路由到某个子域

mydomain.com/ServerOA/

接下来的 2 条规则将流量路由到

mydomain.com/

这按预期工作。但是,如果我输入

mydomain.com/anypath/

它给了我一个tomcat 404。我怀疑第二组规则匹配并将流量转发到tomcat,然后返回404。

根据文档,我确实尝试定义一些 acls 来阻止所有其他不太有效的路径(启动 haproxy 时不接受配置)。

block unless METH_GET or METH_POST want_server_oa
block unless METH_GET or METH_POST is_root

任何帮助将非常感激。

4

1 回答 1

1

您必须明确定义允许在根“mydomain.com/”和子文件夹下访问的项目,然后block是所有其他项目。(应该不会很多吧?)

acl want_server_oa path_beg /ServerOA
acl allow_html path_reg -i /.*\.html
acl allow_styles path_reg -i /css/.*\.css
block unless METH_GET want_server_oa or METH_POST want_server_oa or METH_GET allow_html or METH_POST allow_html or METH_GET allow_styles or METH_POST allow_styles

附加说明:haproxy -c您可以使用该命令检查您的配置是否有任何错误。像这样:

haproxy -f /etc/haproxy/haproxy.cfg -c
于 2013-11-05T06:53:06.053 回答