2013-10-06 24 views
1

我有一對夫婦在HAProxy的定義的規則阻止所有其他的URL在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 

任何幫助將不勝感激。

回答

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 
相關問題