运行elasticsearch服务器时。
我们可以访问www.example.com:9200
但我希望阻止远程访问只允许本地访问。
如何设置?
答案 0 :(得分:15)
不是通过更改http.enabled
设置中的/etc/elasticsearch/elasticsearch.yml
来禁用整个HTTP协议(因为您的某些API可以使用我的情况下的HTTP端点),您只需设置network.host: localhost
同一个文件。
这将使您的:9200
HTTP访问权限仅可从本地计算机/服务器获得。
答案 1 :(得分:2)
Elasticsearch允许您在设置中禁用http端点,只需将http.enabled
设置为false。它还允许拥有一个只能在同一个jvm中访问的本地节点。另一方面,您询问如何仅允许本地访问其余端点,这是不同的,需要使用其他工具。
事实上,将弹性搜索公开给互联网并不是一个好主意。我会使用像apache或Nginx这样的代理来限制对它的访问,并仅打开一些可用的端点,但只有当你有外部用户想要直接向elasticsearch发送消息时才需要这样做。通常情况并非如此。或者,如果您只是想拒绝所有外部用户访问它,因为它只是您的网站或需要访问它的应用程序,只需使用防火墙并设置适当的规则来关闭9200端口。 / p>
答案 2 :(得分:2)
您应该将http.host设置为" 127.0.0.1"。这样,您可以从主机本身访问端口9200上的http,但不能从外部访问。这也允许您放置一个侦听其他端口和过滤器的代理,并将请求选择性地传递给localhost:9200上的elasticsearch节点。
例如,您可能希望拒绝关闭请求,使用nginx执行基本身份验证,然后将所有查询请求传递到http://localhost:9200的elasticsearch cluster url。
这并不涉及防火墙。