将Solr数据导入限制为localhost,但允许从任何地址中选择

时间:2012-03-13 00:29:20

标签: tomcat solr

我目前在同一个本地网络上有两台机器 - 一台使用Tomcat 7和Solr 3.5,另一台使用Apache和PHP。我的PHP代码通过solrservername获取搜索结果:8080 / solr / corename / select?...,我通过手动点击... / dataimport来更新索引?...

如何限制对dataimport URL的访问(最好只允许从localhost访问)而不影响选择URL?为了澄清,我宁愿不要弄乱HTTPS或尽可能添加HTTP身份验证。

2 个答案:

答案 0 :(得分:1)

我可能错了,但看起来没有办法在不使用代理的情况下限制访问。您可以自己查看Tomcat Security FAQ和引用的链接,但在允许特定IP时,似乎无法指定url-pattern。

选项是在Apache代理后面配置Solr并具有您需要的所有灵活性,否则您可以使用简单的http身份验证(我知道您写的不想,​​但我很保证!) dataimport url修改solr web.xml,如下所示:

<login-config>
    <auth-method>BASIC</auth-method>
    <realm-name>DataImport protection</realm-name>
</login-config>

<security-constraint>
    <web-resource-collection>
        <web-resource-name>DataImport</web-resource-name>
        <url-pattern>/core/dataimport/*</url-pattern>
    </web-resource-collection>

    <auth-constraint>
        <role-name>solradmin</role-name>
    </auth-constraint>
</security-constraint>

tomcat-users.xml$CATALINA_HOME/conf内)像这样:

<role rolename="solradmin"/>
<user username="user" password="pass" roles="solradmin"/>

答案 1 :(得分:0)

了解我在这种情况下通常做的事情:在Solr机器中,您可以设置防火墙阻止所有传入的端口呼叫:80并设置反向代理(例如Apache服务器)以重定向所有调用solrservername / solr的呼叫/ corename / select?* to solrservername:8080 / solr / corename / select?**。其余的只能在当地访问。

此外,在solr安全性中,您可以通过将以下内容放在server.xml中来限制基于IP地址的服务器访问

<Valve className="org.apache.catalina.valves.RemoteAddrValve" allow="127.0.0.1″/>