Балансировщик нагрузки с apache httpd и wildfly для остальных веб-сервисов с mod_proxy

У меня есть балансировщик нагрузки Apache с mod_proxy и wildfly (apache 224 и wildfly 9).

У меня есть 4 сервера в домене в wildfly, и балансировщик нагрузки отлично работает с приложением «hello world», а в диспетчере балансировщика я вижу, как запросы отправляются на каждый сервер.

Дело в том, что когда я использую приложение с некоторыми веб-службами REST, я отправляю запрос с помощью метода 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

I am testing using postman and sending the requests with a get method and a header for authentication: basic {base64 code} as follows:

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 проекта, но все равно получаю ту же ошибку.


person user3123488    schedule 11.08.2016    source источник
comment
Не уверен, что это связано, но вы должны согласовывать конечные косые черты, если используете ProxyPass /test, тогда используйте BalancerMember http://localhost:8080   -  person Dusan Bajic    schedule 11.08.2016
comment
Спасибо! в этом была проблема. Я сходил с ума по этому поводу, так как видел все, что было хорошо, и у меня вообще не было ошибок в журналах.   -  person user3123488    schedule 12.08.2016


Ответы (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>
person user3123488    schedule 12.08.2016