node.js - 使用 Nginx 和 elasticsearch 作为 https 的反向代理是否正确?

标签 node.js elasticsearch nginx


一个简单的问题,我有一个包含 10 个 Node 的集群,目前我在 js 客户端的配置中提供所有 Node ,如果我使用 https,我将失去查询所有 Node 的能力,因为我只想对一个 Node 使用反向代理。这是正确的吗?
我没有找到任何相关文档。 我已经尝试过shield或类似的东西,但这似乎有点矫枉过正,我不想在 Node 之间使用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"
}

最佳答案

使用反向代理来终止 TLS 是一个有效的解决方案。由于 Elasticsearch 仅需要 HTTP,因此非常容易代理。

但是,您可能希望在多个主机上使用多个 nginx 实例;否则就会出现单点故障。你可以这样做:

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

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

关于node.js - 使用 Nginx 和 elasticsearch 作为 https 的反向代理是否正确?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45550301/

相关文章:

javascript - save() 不适用于 mongoose.Schema

django - centos上设置nginx+django服务时uwsgi无法加载app

angular - mime.types 不用于 angular 8 应用程序的 javascript 和 css 文件(使用 nginx :alpine) dockerized

node.js - NODE_ENV=development 在 .bash_profile 中设置但在代码中使用时未定义

javascript - winston 记录器未在新行上打印

javascript - 为数组的每个元素发出查询

elasticsearch - 在Elasticsearch中更改文档的_type

elasticsearch - 压缩到 Elasticsearch 索引

elasticsearch - 使用dataprovider时如何在yii2 Elasticsearch 中使用random_score

ruby-on-rails - Apache 如何导致重复请求?