使用apache httpd和wildfly为mod_proxy

时间:2016-08-11 17:49:14

标签: apache mod-proxy wildfly-9

我有一个带有mod_proxy和wildfly(apache 224和wildfly 9)的apache负载均衡器。

我在wildfly的域中有4台服务器,负载均衡器可以正常运行“hello world”应用程序,在平衡器管理器中,我可以看到请求如何发送到每台服务器。

问题是,当我使用具有一些REST Web服务的应用程序时,我发送带有GET方法的请求和一些用于身份验证的标头,并且不知何故,当我通过加载访问它时,应用程序正在响应错误平衡器,但如果我直接发送到服务器,它可以正常工作。

我的配置如下

<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

我正在使用postman测试并使用get方法和标头发送请求进行身份验证:basic {base64 code}如下:

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,但我仍然遇到同样的错误。

1 个答案:

答案 0 :(得分:1)

感谢Dusan Bajic,他看到了我遇到的问题。在平衡器成员中,我用&#34; /&#34;完成了路线。当我使用ProxyPass时,我开始使用&#34; /&#34;,复制该字符。不知何故,使用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>