我打算在同一个java容器中运行 java web应用程序和 solr 。我希望Web应用程序可以公开访问,但solr只能访问同一容器中的其他Web应用程序。 Solr只能作为localhost访问,而不能从外部访问。我们可以在web-xml中编写一些规则来实现这一目标吗?
答案 0 :(得分:2)
这实际上是serverfault的问题。无论如何,你可以像处理任何内部服务器一样处理这个问题,比如数据库服务器:不要给Solr一个公共IP,或者把它放在防火墙后面。
除此之外,您可以设置HTTP身份验证(Tomcat example)或将容器设置为仅侦听localhost(即,如果您的Web应用程序在同一个框上运行)(jetty example) ,但我建议将其置于正确配置的防火墙之后。
另请参阅SolrSecurity wiki page,但它主要涉及Solr级安全性。
答案 1 :(得分:1)
对于Resin,您可以通过IP地址定义安全性约束。以下是来自树脂2.X的样品我正在使用它可能与树脂3或4
略有不同<host id='solr.mydomain.com' app-dir='/dev/null'>
<env-entry>
<env-entry-name>solr/home</env-entry-name>
<env-entry-type>java.lang.String</env-entry-type>
<env-entry-value>/usr/local/java/solr-home</env-entry-value>
</env-entry>
<security-constraint>
<web-resource-collection>
<url-pattern>/*</url-pattern>
</web-resource-collection>
<ip-constraint>127.0.0.1</ip-constraint>
<ip-constraint>192.168.1.0/24</ip-constraint>
</security-constraint>
<war-dir>webapps/solr</war-dir>
<access-log id='log/solr-access.log'
format='%h %l %u %t "%r" %s %b "%{Referer}i" "%{User-Agent}i"'/>
<error-log id='log/solr-error.log'/>
</host>
答案 2 :(得分:0)
我在Solr wiki上找到了这个链接,详细介绍了安装过程以及保护应用程序的方法。 http://wiki.apache.org/solr/SolrInstall