Apache 2.2 ProxyPass с Weblogic - не может использовать root - PullRequest
2 голосов
/ 08 октября 2010

Я пытаюсь настроить прокси-сервер Apache 2.2, чтобы он указывал на несколько экземпляров Weblogic.Я неплохо справляюсь со всем, кроме незначительного момента.

Я могу заставить это работать: ProxyPass / QA http://IP:PORT/

, перейдя к http://IP:PORT/QA

Но я не могу заставить это работать: ProxyPass / http://IP:PORT/

, перейдя на http://IP:PORT/

Я не понимаю, почему у меня не может быть ProxyPass сопоставляется с корнем (/)

Ответы [ 2 ]

0 голосов
/ 13 октября 2010

Алекс, спасибо за помощь!

Для тех, кто пытается установить аналогичную среду, я вставлю то, что я сделал ниже.

ProxyRequests OFF

LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_http_module modules/mod_proxy_http.so
LoadModule proxy_balancer_module modules/mod_proxy_balancer.so
LoadModule headers_module modules/mod_headers.so

<Proxy *>
    Order deny,allow
    Allow from all
</Proxy>

Header add Set-Cookie "ROUTEID=.%{BALANCER_WORKER_ROUTE}e; path=/" env=BALANCER_ROUTE_CHANGED
<Proxy balancer://cluster>
    BalancerMember http://IP:PORT/ route=1
    BalancerMember http://IP:PORT/ route=2
    ProxySet stickysession=ROUTEID
</Proxy>

<VirtualHost *:80>
    ProxyPass / balancer://cluster/
    ProxyPassReverse / balancer://cluster/
</VirtualHost> 
0 голосов
/ 10 октября 2010

Я считаю, что Apache просто не позволяет этого. Здесь есть потенциальная проблема с порядком и приоритетом конфликтующих директив; если вы получите запрос на / QA /, должен ли он соответствовать / QA или / match? Я предполагаю, что вы, возможно, пытаетесь сопоставить несколько управляемых серверов на одном адресе / порте без необходимости идентифицировать каждый подпуть, то есть одно правило вместо многих. Есть еще конфликт с documentRoot. Возможно, если вы сопоставляете с корнем, то какой смысл в уровне Apache - все проходит напрямую, и ничто не обслуживается самим Apache. (Это не значит, что для этого никогда нет веских причин, но я понимаю, почему Apache может так думать).

Единственный способ, которым я знаю, это сделать на фиктивном виртуальном хосте (не уверен, может ли это быть на единственном порте прослушивания, но я так думаю):

<VirtualHost *:8080>
    ProxyPass / http://IP:PORT/
    ProxyPassReverse / http://IP:PORT/
</VirtualHost>

Вы также можете посмотреть на подключаемый модуль прокси-сервера WebLogic:

<Location />
    SetHandler weblogic-handler
</Location>

<IfModule mod_weblogic.c>
    WebLogicHost IP
    WebLogicPort PORT
</IfModule>
...