带有apache httpd和wildfly的负载平衡器,用于带有mod_代理的rest web服务

带有apache httpd和wildfly的负载平衡器,用于带有mod_代理的rest web服务,apache,mod-proxy,wildfly-9,Apache,Mod Proxy,Wildfly 9,我有一个带有mod_代理和wildfly(apache224和wildfly 9)的apache负载平衡器 我在wildfly的域中有4台服务器,负载平衡器可以与“hello world”应用程序配合使用,在平衡器管理器中,我可以看到请求是如何发送到每台服务器的 问题是,当我使用具有一些REST web服务的应用程序时,我使用GET方法和一些用于身份验证的头发送请求,并且在某种程度上,当我通过负载平衡器访问应用程序时,应用程序响应错误,但是如果我直接将其发送到服务器,它会正常工作 我的配置如下

我有一个带有mod_代理和wildfly(apache224和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

代理请求关闭
平衡员http://localhost:8080/ 荷载系数=25
平衡员http://localhost:8230/ 荷载系数=25
平衡员http://localhost:8330/ 荷载系数=25
平衡员http://localhost:8430/ 荷载系数=25
SetHandler平衡器管理器
命令拒绝,允许
通融
命令允许,拒绝
通融
代理通过/测试balancer://mycluster stickysession=jsSessionId

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

<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>

这会导致错误

当我尝试这个:

这很好

当我尝试上面的方法,但使用post方法时,它会得到与负载平衡器中相同的错误

知道我做错了什么吗


PS:我试着输入项目的WEB-INF/WEB.xml,但仍然得到相同的错误。

多亏了Dusan Bajic,他看到了我遇到的问题。在平衡器成员中,我用“/”完成路由,当我使用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>

代理请求关闭
平衡员http://localhost:8080 荷载系数=25
平衡员http://localhost:8230 荷载系数=25
平衡员http://localhost:8330 荷载系数=25
平衡员http://localhost:8430 荷载系数=25
SetHandler平衡器管理器
命令拒绝,允许
通融
命令允许,拒绝
通融
代理通过/测试balancer://mycluster stickysession=jsSessionId

不确定它是否相关,但应与后面的斜杠一致,如果使用
ProxyPass/test
,则使用
balancerhttp://localhost:8080
谢谢!这就是问题所在。当我看到一切都很好的时候,我开始对此发狂,而且我在日志中一点错误都没有。