2016-08-11 79 views
1

我有一個Apache負載均衡器與mod_proxy和wildfly(Apache 224和野蠻9)。負載均衡器與Apache HTTPD和野蠻休息Web服務與mod_proxy

我在wildfly的域中有4個服務器,負載平衡器在「hello world」應用中工作正常,在平衡器管理器中,我可以看到請求是如何發送到每個服務器的。

事情是,當我使用具有一些REST Web服務的應用程序時,我使用GET方法和一些頭進行身份驗證發送請求,並且某種程度上,當我通過負載均衡器,但如果我直接發送到服務器,它可以正常工作。

我cofiguration去如下

<VirtualHost *:80> 
ProxyRequests Off 
<Proxy balancer://mycluster> 
    BalancerMember http://localhost:8080/ loadfactor=25 
    BalancerMember http://localhost:8230/ loadfactor=25 
    BalancerMember http://localhost:8330/ loadfactor=25 
    BalancerMember http://localhost:8430/ loadfactor=25 
</Proxy> 
<Location /balancer-manager> 
    SetHandler balancer-manager 
    Order Deny,Allow 
    Allow from all 
</Location> 
<Location /test> 
    Order allow,deny 
    Allow from all 
</Location> 
ProxyPass /test balancer://mycluster stickysession=JSESSIONID 

我使用的郵遞員發送一個GET方法和認證頭的請求測試:基本{的base64編碼}如下:

http://127.0.0.1/test/myproject.ws/myproject/get_list?key=T11108101191&page=1

並且這會導致錯誤。

當我試試這個:

http://127.0.0.1:8080/myproject.ws/myproject/get_list?key=T11108101191&page=1

這又確定

,當我嘗試了上面,而是用post方法,它得到了同樣的錯誤,如負載平衡器。

任何想法我做錯了什麼?

PS:我已經試過放入項目的WEB-INF/web.xml中,但我仍然得到相同的錯誤。

+0

不知道這是相關的,但你應該和結尾的斜槓一致的,如果用'的ProxyPass/test',然後用'BalancerMember的http://本地主機: 8080' –

+1

謝謝!這是問題所在。當我看到一切都很好的時候,我對這個問題越來越感興趣,而且我在日誌中根本沒有錯誤。 – user3123488

回答

1

感謝杜尚巴吉克,他看到了我的問題。在平衡器成員中,我使用「/」完成路由,當我使用ProxyPass時,我以「/」開頭,複製該角色。不知何故,與helloworld應用程序正常工作,但當我傳遞參數,它失敗了。

新的配置去如下:

如果
<VirtualHost *:80> 
    ProxyRequests Off 
<Proxy balancer://mycluster> 
    BalancerMember http://localhost:8080 loadfactor=25 
    BalancerMember http://localhost:8230 loadfactor=25 
    BalancerMember http://localhost:8330 loadfactor=25 
    BalancerMember http://localhost:8430 loadfactor=25 
</Proxy> 
<Location /balancer-manager> 
    SetHandler balancer-manager 
    Order Deny,Allow 
    Allow from all 
</Location> 
<Location /test> 
    Order allow,deny 
    Allow from all 
</Location> 

ProxyPass /test balancer://mycluster stickysession=JSESSIONID 
</VirtualHost>