我目前在同一个本地网络上有两台机器 - 一台使用Tomcat 7和Solr 3.5,另一台使用Apache和PHP。我的PHP代码通过solrservername获取搜索结果:8080 / solr / corename / select?...,我通过手动点击... / dataimport来更新索引?...
如何限制对dataimport URL的访问(最好只允许从localhost访问)而不影响选择URL?为了澄清,我宁愿不要弄乱HTTPS或尽可能添加HTTP身份验证。
答案 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″/>