以只读模式运行Solr

时间:2010-09-03 15:04:47

标签: solr

我想我在这里遗漏了一些明显的东西。我必须想象很多人向其他开发人员开放他们的Solr服务器,并且不希望他们能够修改索引。

solrconfig.xml中是否有可以设置为有效使索引成为只读的东西?

更新澄清: 我的目标是将Solr与另一个应用程序管理的现有Lucene索引一起使用。这很好用,但我想确保Solr永远不会尝试写入这个索引。

2 个答案:

答案 0 :(得分:7)

将Solr实例暴露给公共互联网是一个坏主意。即使您可以删除某些组件以使其成为只读组件,但它的设计并未考虑安全性,它本身就是用作内部服务,就像您不会公开RDBMS一样。

来自Solr Security wiki page

  

首先,Solr没有   担心安全问题   文件级别或   沟通水平。这是强烈的   建议申请   包含Solr的服务器是防火墙的   这样的唯一客户可以访问   索尔是你自己的。默认/示例   Solr的安装允许任何客户   访问它以添加,更新和   删除文件(当然   搜索/阅读),包括访问   Solr配置和架构   文件和管理用户   接口

即使是ajax-solr,javascript的Solr客户端也可以在浏览器recommends talking to Solr through a proxy中运行。

guardian.co.uk为例:众所周知they use Solr for searching,但他们构建了一个API来让其他人访问其内容。通过这种方式,他们可以definecontrol确切地希望人们搜索内容的内容和方式。

否则,任何脚本小子都可以为DoS您的Solr实例写一个简单的循环,从而关闭您的网站。

答案 1 :(得分:2)

您可以在solrconfig.xml中删除定义solr.XmlUpdateRequestHandler的行。

复制是一种很好的方法,可以设置只读,同时能够进行索引。只需设置一个具有受限访问权限的主服务器和一个只读的服务器(通过从配置中删除XmlUpdateRequestHandler)。从站将从主站复制,但不会直接接受任何索引。

<强>更新

我刚刚在Solr 1.4中读过,你可以disable component。我刚刚在/ update requestHandler上尝试了它,我再也无法索引了。