将Nginx与elasticsearch一起用作https的反向代理是否正确?

时间:2017-08-07 15:13:02

标签: node.js elasticsearch nginx


一个简单的问题,我有一个10节点的集群,目前我提供配置中的所有节点为我的js客户端,如果我使用https,我将失去查询所有节点的能力,因为我想为一个节点使用反向代理只要。这是正确的吗?
我没有找到任何相关的文件。 我已经尝试过屏蔽或类似的东西了,但是它有点过分,我不想在节点之间有ssl,我只想拥有一个带有https的前端。

{
 "name" : "node_01",
 "cluster_name" : "*****",
 "cluster_uuid" : "*****",
 "version" : {
  "number" : "5.4.1",
  "build_hash" : "2cfe0df",
  "build_date" : "2017-05-29T16:05:51.443Z",
  "build_snapshot" : false,
  "lucene_version" : "6.5.1"
},
"tagline" : "You Know, for Search"
}

1 个答案:

答案 0 :(得分:1)

使用反向代理进行TLS终止是一种有效的解决方案。由于Elasticsearch只需要HTTP,因此很容易代理。

但是,您可能希望在多个主机上使用多个nginx实例;否则你会有一个单一的失败点。你可以这样做:

  • 使用3个节点与客户端进行通信。仅允许Elasticsearch在端口9200上从localhost访问HTTP,并通过在同一主机上运行的nginx代理它。让nginx终止TLS连接并接受来自客户端的连接。仅允许Elasticsearch在端口9300上访问所有10个Elasticsearch节点的传输协议。
  • 在剩余的7个Elasticsearch节点上,不允许任何HTTP访问,只允许其他Elasticsearch节点的传输协议。

PS:如果您在AWS(或类似服务)上运行:使用ELB为您终止TLS并保留10个节点。