我在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
任何建议我做错了什么?
答案 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