【问题标题】:Mixing RewriteRule and ProxyPass in Apache在 Apache 中混合使用 RewriteRule 和 ProxyPass
【发布时间】:2010-10-27 03:02:17
【问题描述】:

我今天正在调试一个与混合mod_proxymod_rewrite 相关的问题,我最终不得不在RewriteRule 中使用balancer://mycluster 以停止接收来自Apache 的404 错误。我有两个问题:

1) 有没有其他方法可以在不将balancer://mycluster 添加到RewriteRule 中的情况下让重写的URL 通过平衡器?

2) 有没有办法在<Proxy>RewriteRule 中定义我在ProxyPass (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

...

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

【问题讨论】:

    标签: apache mod-rewrite apache2 load-balancing mod-proxy


    【解决方案1】:

    看起来我可以使用 ProxySet 指令,以便与 RewriteRule 匹配的 URL 以相同的方式进行负载平衡。

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

    【讨论】:

      猜你喜欢
      • 2020-06-29
      • 2019-01-25
      • 1970-01-01
      • 2013-03-02
      • 2012-01-30
      • 1970-01-01
      • 1970-01-01
      • 2013-06-06
      • 2013-11-26
      相关资源
      最近更新 更多