强制URL模式到apache中的特定平衡器成员

时间:2017-06-19 18:58:30

标签: apache load-balancing

我在apache中有一个负载均衡器,目前只有两个成员。我希望网址以" admin"开头要映射到特定实例(http://localhost:16666/),因为管理站点需要访问也在此计算机中的CDN上的文件。我可以通过将此文件夹安装到其他服务器或实现单独的服务来处理这个问题,但这是我现在想做的最后一件事。我打算创建一个新的proxypass规则来将这些规则映射到这个成员而不是平衡器,但它只是忽略它。

我的vhost配置的重要部分:

            <Location /balancer-manager>
               SetHandler balancer-manager
            </Location>

            <Proxy balancer://videoportal>
                    BalancerMember http://localhost:16666
                    BalancerMember http://example.com:16666
                    Require all granted
                    ProxySet lbmethod=byrequests
            </Proxy>

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

            ErrorLog /var/log/apache2/videoportal-error.log

            ProxyPass /balancer-manager !
            ProxyPass "/admin"  "http://localhost:16666/admin"
            ProxyPassReverse "/admin" "http://localhost:16666/admin"

            ProxyPass / balancer://videoportal/
            ProxyPassReverse / balancer://videoportal/
            ProxyRequests Off

任何建议我做错了什么?

2 个答案:

答案 0 :(得分:0)

首先你要混合apache 2.2和apache 2.4 config

在apache 2.2中使用

Get-ChildItem "I:\TEMP_Dir_SSN\" | %{
    if($_.name -ne "fullpath.txt" -or $_.name -ne "SSN_FILES.txt"){
        remove-item $_.fullname
    }
}

//您的apache配置//

Order deny,allow
Allow from all

在apache 2.4中

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

//您的apache配置//

Require all granted

第二次尝试将/ admin置于平衡器定义之前

<Proxy balancer://videoportal>
    ...
    Require all granted
    ProxySet lbmethod=byrequests
 </Proxy>

答案 1 :(得分:0)

我想出了问题所在。

我为此创建了一个位置规则,并添加了一个标题来跟踪它是否正常工作:

        <Location /balancer-manager>
           SetHandler balancer-manager
        </Location>

        <Proxy balancer://videoportal>
                BalancerMember http://localhost:16666
                BalancerMember http://example.com:16666
                Require all granted
                ProxySet lbmethod=byrequests
        </Proxy>

        <Proxy *>
                Require all granted
        </Proxy>

        ErrorLog /var/log/apache2/videoportal-error.log

        ProxyPass /balancer-manager !

        # This is the new part
        <Location "/admin">
             ProxyPass "http://localhost:16666/admin"
             ProxyPassReverse "http://localhost:16666/admin"
             Header set ADMIN "true"
        </Location>

        # end of new part

        ProxyPass / balancer://videoportal/
        ProxyPassReverse / balancer://videoportal/
        ProxyRequests Off