[英]How to restrict IPs in a clustered Solr environment using IPAccessHandler?
我們有一個 Solr 集群系統(兩個實例在兩台服務器上運行),其中使用 zookeeper 維護仲裁。 我們可以通過點擊直接服務器 URL 或一攬子負載均衡器 URL 來訪問 Solr。 我們需要將訪問這三個 URL 的幾個 IP 列入白名單
我已經嘗試過這里提到的步驟: 限制 Jetty 和 Solr 的 IP 地址
在這里: 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 作為參數傳遞給白名單
也許這為時已晚,但我在需要將多個 IP 地址列入白名單時遇到了同樣的問題,所以我想我會分享我找到的解決方案。 我正在運行 Jetty 8.1.16.v20140903 作為 CollabNet Subversion Edge 安裝的一部分,這對我有用:
<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
。 我根據我在 Jetty 8.1.16 的 JavaDoc 中看到的內容進行了此更改: http : //archive.eclipse.org/jetty/8.1.16.v20140903/apidocs/org/eclipse/jetty/server/handler/IPAccessHandler。 html
MatsLindh發表的評論可能是一個更好的長期解決方案(通過操作系統防火牆控制訪問),但我在這里所做的方法也應該可以完成工作。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.