我正在设置 Apache Solr 4.1,它将用于为 Web 应用程序索引数据。只有 Web 应用程序才能访问 Solr。用户和其他客户端不会直接与 Solr 对话。
保护此类 Solr 设置的最佳实践有哪些?
(我们使用 Jetty 来运行 Solr)
我正在设置 Apache Solr 4.1,它将用于为 Web 应用程序索引数据。只有 Web 应用程序才能访问 Solr。用户和其他客户端不会直接与 Solr 对话。
保护此类 Solr 设置的最佳实践有哪些?
(我们使用 Jetty 来运行 Solr)
我知道您正在使用 Jetty,但我有一个使用 Tomcat 的方法有效,将在下面解释。
基本上,我已经放弃尝试理解我认为 Java Web 应用程序在 Jetty 和 Tomcat 中保护自己的过于迟钝的方式。因此,我更愿意让 Apache 承担重任,成为防止访问的第一道防线。Apache 坚固可靠。如果您觉得需要额外的安全性,您可以随时安装ModSecurity等工具以使其更加安全。
关键是像这样在 Apache 中创建反向代理设置。将运行 Solr 的主机的 Apache 配置代码。我喜欢让它从子目录中运行,所以这个例子
/solr
用作ProxyPass
和ProxyPassReverse
设置的例子。首先是在 URL 中添加尾部斜杠的设置,以便将调用http://my.server.is.great/solr
转换为http://my.server.is.great/solr/
现在来了
mod_proxy
将 Tomcat Web 应用程序路由到 Apache 前端的魔法。此时,我将重新启动 Apache 并查看它是否有效。如果是这样,一切都很好!现在最后一步是进入 Tomcat XML 文件并通过添加到连接器来限制 Solr 仅响应
localhost
/请求。127.0.0.1
address="127.0.0.1"
现在这最后一部分?也许这就是您所需要的。也许您只是希望它
address="127.0.0.1"
成为需要访问的一台机器的机器 IP。但是话又说回来,您正在使用 Jetty,所以也许有一种等效的方法可以限制 Jetty 中的一个 IP?或者您甚至可以通过 Apache 配置中的 IP 进行限制。什么效果最好。如果可能,请使用 SSL 并要求对所有内容进行身份验证。
对于 SSL,请参阅 Jetty 文档。
对于身份验证,Solr 文档中有一个很好的 Jetty 示例。