在Apache中混合使用RewriteRule和ProxyPass

Tay*_*ese 5 apache mod-rewrite load-balancing apache2 mod-proxy

我正在努力调试今天与混合mod_proxymod_rewrite一起相关的问题,我最终不得不使用balancer://myclusterRewriteRule来停止从Apache接收404错误.我有两个问题:

1)有没有其他方法可以让重写的URL通过平衡器而不添加balancer://myclusterRewriteRule

2)有没有办法ProxyPass<Proxy>or或RewriteRule?中定义我定义的所有参数(stickysession = JSESSIONID | jsessionid scolonpathdelim = On lbmethod = bytraffic nofailover = Off)?我担心匹配新的请求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
Run Code Online (Sandbox Code Playgroud)

...

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

Tay*_*ese 4

看起来我可以使用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>
Run Code Online (Sandbox Code Playgroud)