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