26

我一直在阅读 Elastic Search的文档,我是一个忠实的粉丝,我想用它来处理我的 ASP.NET MVC 应用程序的搜索。

然而,这引入了一些有趣的转折。如果 ASP.NET MVC 应用程序位于专用机器上,则很容易启动 Elastic Search 实例并使用TCP 传输在本地进行连接。

但是,我不在 ASP.NET MVC 应用程序的专用机器上,看起来我也不会很快转向一台。

这使得 Elastic Search 托管在另一台机器上(在 *NIX 世界中),我可能会在那里使用共享托管。

然而,Elastic Search 最大的不足之一是它不支持 HTTPS 和开箱即用的基本身份验证。如果是这样,那么这个问题就不存在了;我只需将它托管在某个地方,并确保拥有一个非常安全的密码并启用 HTTPS(可能使用自签名证书)。

但事实并非如此。

鉴于此,在 Internet 上以安全的方式公开 Elastic Search 的好方法是什么?

请注意,我正在寻找一些希望不需要编写代码来为我想要的方法提供填充程序的东西(换句话说,编写转发器)。

4

2 回答 2

24

现在可以使用用于弹性搜索的插件,该插件允许您使用嵌入式 Jetty 实例替换 HTTP 传输

因为它使用 Jetty 来处理 HTTP 传输,所以它可以处理 SSL 连接以及配置身份验证。


(注意,以下仍然是合理的建议,因为以这种方式抽象您的操作通常是一种很好的做法)

在对ElasticSearch 邮件列表进行了多次讨论之后,我发现当前的解决方案是将 ElasticSearch 托管在另一个应用程序层之后,然后保护层。

推理是扎实的;ElasticSearch 类似于数据库,您不会让您的数据库面向所有人。

我(和其他人)遇到的事情是,因为 ElasticSearch 使用 HTTP 作为传输并使用 JSON 作为操作语法,所以 ElasticSearch 是面向公众的。

但是,目前有一个请求添加 HTTPS 传输支持(假设提供了证书)以及基本(摘要)身份验证。

于 2011-04-25T04:39:33.720 回答
6

您必须以某种方式为机器设置防火墙,只允许来自应用服务器的流量,例如在 linux 上使用 iptables,或者在 Windows 上使用某种个人防火墙。

不过,这会将您带入 serverfault.com 领域 - 没有针对此的编程解决方案。

于 2011-02-10T17:13:43.783 回答