Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/apache/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将URL模式强制到apache中的特定平衡器成员_Apache_Load Balancing - Fatal编程技术网

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

将URL模式强制到apache中的特定平衡器成员,apache,load-balancing,Apache,Load Balancing,我在apache中有一个负载平衡器,目前只有两个成员。我希望URL以“admin”开头映射到一个特定实例(),因为管理员站点需要访问CDN上的文件,而CDN也在这台机器中。我可以通过将这个文件夹装载到另一台服务器,或者实现一个单独的服务来处理这个问题,但这是我现在最不想做的事情。我正要创建一个新的proxypass规则来将这些映射到此成员而不是平衡器,但它只是忽略了它 vhost配置的重要部分: <Location /balancer-manager>

我在apache中有一个负载平衡器,目前只有两个成员。我希望URL以“admin”开头映射到一个特定实例(),因为管理员站点需要访问CDN上的文件,而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

SetHandler平衡器管理器
平衡员http://localhost:16666
平衡员http://example.com:16666
要求所有授权
ProxySet lbmethod=byrequests
命令拒绝,允许
通融
ErrorLog/var/log/apache2/videoportal-error.log
ProxyPass/平衡器管理器!
ProxyPass“/管理员”http://localhost:16666/admin"
ProxyPassReverse“/管理员”http://localhost:16666/admin"
ProxyPass/balancer://videoportal/
ProxyPassReverse/balancer://videoportal/
代理请求关闭

有什么建议吗?我做错了什么?

首先,您混合使用了Apache2.2和Apache2.4配置

在Apache2.2中使用

Order deny,allow
Allow from all
//您的apache配置//

//您的apache配置//


...
要求所有授权
ProxySet lbmethod=byrequests
第二次尝试将/admin放在平衡器定义之前

    ...
    SetHandler balancer-manager
</Location>

ProxyPass "/admin"  "http://localhost:16666/admin"
ProxyPassReverse "/admin" "http://localhost:16666/admin"

<Proxy balancer://videoportal>
      BalancerMember http://localhost:16666
      ...
。。。
SetHandler平衡器管理器
ProxyPass“/管理员”http://localhost:16666/admin"
ProxyPassReverse“/管理员”http://localhost:16666/admin"
平衡员http://localhost:16666
...

我找到了问题所在

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

        <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

SetHandler平衡器管理器
平衡员http://localhost:16666
平衡员http://example.com:16666
要求所有授权
ProxySet lbmethod=byrequests
要求所有授权
ErrorLog/var/log/apache2/videoportal-error.log
ProxyPass/平衡器管理器!
#这是新的部分
ProxyPass“http://localhost:16666/admin"
ProxyPassReverse“http://localhost:16666/admin"
标题集管理“true”
#新零件的结束
ProxyPass/balancer://videoportal/
ProxyPassReverse/balancer://videoportal/
代理请求关闭

谢谢,关于订单/需求的混合规则,您是对的。
<Proxy balancer://videoportal>
    ...
    Require all granted
    ProxySet lbmethod=byrequests
 </Proxy>
    ...
    SetHandler balancer-manager
</Location>

ProxyPass "/admin"  "http://localhost:16666/admin"
ProxyPassReverse "/admin" "http://localhost:16666/admin"

<Proxy balancer://videoportal>
      BalancerMember http://localhost:16666
      ...
        <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