2013-07-02 41 views
5

運行elasticsearch服務器時。 我們可以訪問www.example.com:9200如何在elasticsearch中禁用遠程訪問

但我想阻止遠程訪問只允許本地訪問。

如何設置?

+0

能否請您接受/ upvote你得到的答案,如果它是有用的,或提供反饋,否則?有什麼要補充的? – javanna

+0

你甚至是防火牆:-) – DanFromGermany

回答

2

Elasticsearch允許您在設置中禁用http端點,只是將http.enabled設置爲false。它也允許有一個本地節點,它只能在同一個jvm中訪問。另一方面,您正在詢問如何僅允許本地訪問其他端點,這是不同的,並且需要使用其他工具。

事實上,將elasticsearch展示給互聯網並不是一個好主意。我會使用像apache或Nginx這樣的代理來限制對它的訪問,並且只打開一些可用的端點,但只有當您有外部用戶想要直接發送消息到elasticsearch時才需要這樣做。通常情況並非如此。或者,如果您只是想拒絕所有外部用戶對其的訪問,因爲它只是您的網站或需要訪問它的應用程序,只需使用防火牆並設置適當的規則即可關閉9200端口。

15

而是通過改變http.enabled/etc/elasticsearch/elasticsearch.yml設置(因爲一些你的API可以用這是我的情況下,HTTP端點)的禁用整個HTTP協議的,你可以在同一個文件中設置network.host: localhost

這將使您的:9200 HTTP訪問只能從您的本地機器/服務器。

+0

這應該是被接受的答案。另見這裏:http://stackoverflow.com/questions/15503455/elasticsearch-allow-only-local-requests – tirdadc

1

您應該將http.host設置爲「127.0.0.1」。這樣,您可以從主機本身訪問端口9200上的http,但不能從外部訪問。這也允許你放一個監聽其他端口和過濾器的代理,並將請求選擇性地傳遞給localhost:9200上的elasticsearch節點。

例如,您可能想要拒絕關機請求,使用nginx進行基本身份驗證,然後將所有查詢請求傳遞給elasticsearch集羣url,網址爲http://localhost:9200

這不涉及防火牆。