Apache 2.4 - 基于完整URL而不是尾随路径配置ProxyPass

时间:2016-12-05 21:00:29

标签: apache proxy load-balancing proxypass

目前,我在Apache httpd.conf文件中配置了以下ProxyPass。

目标是将http://myurl.com上的一个Proxypass: port1 / mypath添加到一个余额组,然后将任何其他Proxypass转到http://myurl.com port2 / mypath到任何其他余额组。

这是我目前的代码,它只能显示基于/ mypath的工作,并且没有任何后续URL。问题是我的两个/ mypath是相同的,只是URL中的port1和port2不同。

我目前正在侦听上面在Apache中定义的Port1和Port2,但我目前无法区分是否有人在myurl.com:port1上进入,因为/ mypath会将其定向到余额管理器中的Group1或Group2两者都是一样的。

<IfModule proxy_module>
   ProxyPass /mypath balancer://Group1/ stickysession=JSESSIONID|jsessionid
   ProxyPass /mypath balancer://Group2/ stickysession=JSESSIONID|jsessionid
    <Proxy balancer://Group1>
            BalancerMember ajp://myurl.com:portX/mypath route=TC01
    </Proxy>
    <Proxy balancer://Group2>
            BalancerMember ajp://myurl.com:portY/mypath route=TC01
    </Proxy>
</IfModule>

以下不起作用,但这基本上就是我要做的事情:

<IfModule proxy_module>
   ProxyPass http://myurl.com:port1/mypath balancer://Group1/ stickysession=JSESSIONID|jsessionid
   ProxyPass http://myurl.com:port2/mypath balancer://Group2/ stickysession=JSESSIONID|jsessionid
    <Proxy balancer://Group1>
            BalancerMember ajp://myurl.com:portX/mypath route=TC01
    </Proxy>
    <Proxy balancer://Group2>
            BalancerMember ajp://myurl.com:portY/mypath route=TC01
    </Proxy>
</IfModule>

1 个答案:

答案 0 :(得分:0)

由于在ProxyPass部分内无法发生<If>,因此您可能会将配置拆分为两个VirtualHost

<VirtualHost *:port1>
    ServerName myurl.com
    <Proxy balancer://Group1>
        BalancerMember ajp://myurl.com:portX/mypath route=TC01
    </Proxy>
    ProxyPass /mypath balancer://Group1/ stickysession=JSESSIONID|jsessionid
</VirtualHost>

<VirtualHost *:port2>
    ServerName myurl.com
    <Proxy balancer://Group2>
        BalancerMember ajp://myurl.com:portY/mypath route=TC01
    </Proxy>
    ProxyPass /mypath balancer://Group2/ stickysession=JSESSIONID|jsessionid
</VirtualHost>