我们有一个Solr集群系统(两个实例在两个服务器上运行),其中使用Zookeeper维护仲裁。我们可以通过点击直接服务器URL或一揽子负载均衡器URL来访问Solr。我们需要将访问这三个URL的一些IP列入白名单
我已经尝试过这里提到的步骤: Restricting IP addresses for Jetty and Solr
在这里: http://lucene.472066.n3.nabble.com/How-To-Secure-Solr-by-IP-Address-td4304491.html
第一种方法的问题是我无法添加多个IP列入白名单
第二种方法的问题是,尽管它允许将字符串数组中的多个IP列入白名单,但是当我们使用负载平衡器URL访问Solr时,它并没有标识列入白名单的IP。只有当我们点击单个服务器的URL时,它才能正常工作
此外,我尝试调用addWhite方法,但这也不起作用,Solr无法启动。
<New id="IPAccessHandler"
class="org.eclipse.jetty.server.handler.IPAccessHandler">
<Set name="white">
<Array type="String">
<Item>127.0.0.1</Item>
<Item>-.-.-.-|/solr/techproducts/select</Item>
</Array>
</Set>
<Set name="whiteListByPath">false</Set>
<Set name="handler">
<New id="Contexts"
class="org.eclipse.jetty.server.handler.ContextHandlerCollection"/>
</Set>
</New>
这不适用于负载均衡器
<New class="org.eclipse.jetty.server.handler.IPAccessHandler">
<Call name="addWhite">
<Arg>xxx.xxx.xxx.xxx</Arg>
</Call>
<Set name="handler">
<!-- here's where you put what was there before: -->
<New id="Contexts" class="org.eclipse.jetty.server.handler.ContextHandlerCollection"/>
</Set>
</New>
这不允许将多个IP作为白名单的参数传递
答案 0 :(得分:0)
也许这还为时过晚,但是由于需要将多个IP地址列入白名单,我遇到了同样的问题,因此我想与我分享发现的解决方案。作为CollabNet Subversion Edge安装的一部分,我正在运行Jetty 8.1.16.v20140903,这对我有用:
<New class="org.eclipse.jetty.server.handler.IPAccessHandler">
<Call name="setWhite">
<Arg>
<Array type="java.lang.String">
<Item>xxx.xxx.xxx.xxx</Item>
<Item>yyy.yyy.yyy.yyy</Item>
</Array>
</Arg>
</Call>
<Set name="handler">
<New id="Contexts" class="org.eclipse.jetty.server.handler.ContextHandlerCollection"/>
</Set>
</New>
请注意,我将Call
标记更改为使用setWhite
,并将Arg
更改为包含Array
。我根据在JavaDoc for Jetty 8.1.16中看到的内容进行了此更改:http://archive.eclipse.org/jetty/8.1.16.v20140903/apidocs/org/eclipse/jetty/server/handler/IPAccessHandler.html
制作的comment MatsLindh可能是一个更好的长期解决方案(通过OS防火墙控制访问),但是我在这里所做的方法也应该可以完成工作。