Смешивание RewriteRule и ProxyPass в Apache

Сегодня я работал над отладкой проблемы, связанной с смешиванием mod_proxy и mod_rewrite вместе, и в итоге мне пришлось использовать balancer://mycluster в RewriteRule, чтобы перестать получать ошибку 404 от Apache. У меня есть два вопроса:

1) Есть ли другой способ заставить переписанный URL пройти через балансировщик, не добавляя balancer://mycluster в RewriteRule?

2) Есть ли способ определить все параметры, которые я определил в ProxyPass (stickysession=JSESSIONID|jsessionid scolonpathdelim=On lbmethod=bytraffic nofailover=Off) в <Proxy> или RewriteRule? Меня беспокоит, что запросы, соответствующие новому RewriteRule, не будут балансировать нагрузку так же, как те, которые проходят через ProxyPass (например, /app1/something.do)?

Ниже приведены соответствующие разделы файла httpd.conf. Я использую Apache 2.2.

<Proxy balancer://mycluster>
    Order deny,allow
    Allow from all

    BalancerMember ajp://my.domain.com:8009 route=node1
    BalancerMember ajp://my.domain.com:8009 route=node2
</Proxy>

ProxyPass /app1 balancer://mycluster/app1 stickysession=JSESSIONID|jsessionid scolonpathdelim=On lbmethod=bytraffic nofailover=Off
ProxyPassReverse /app1 ajp://my.domain.com:8009/app1

...

RewriteRule ^/static/cms/image/(.*)\.(.*) balancer://mycluster/app1/$1.$2 [P,L]

person Taylor Leese    schedule 18.05.2009    source источник


Ответы (1)


Похоже, я могу использовать директиву ProxySet, чтобы URL-адрес таким же образом сопоставьте баланс нагрузки RewriteRule.

<Proxy balancer://mycluster>
    Order deny,allow
    Allow from all

    BalancerMember ajp://my.domain.com:8009 route=node1
    BalancerMember ajp://my.domain.com:8009 route=node2

    ProxySet stickysession=JSESSIONID|jsessionid scolonpathdelim=On lbmethod=bytraffic nofailover=Off
</Proxy>
person Taylor Leese    schedule 18.05.2009