2013-03-19 7 views
38

elasticsearchのローカルリクエストのみを許可する方法はありますか? はそうのようなコマンド:ElasticSearch:ローカルリクエストのみを許可する

curl -XGET 'http://localhost:9200/twitter/_settings' 

は唯一のようにローカルホストと要求上で動作していることができます。

curl -XGET 'http://mydomain.com:9200/twitter/_settings' 

拒否になるだろうか?

私が見ていることから、elasticsearchはデフォルトでそれを許可しています。

EDIT:

http://www.elasticsearch.org/guide/reference/modules/network.html によると、あなたがホストを許可するbind_hostパラメータを管理することができます。デフォルトでは、anyLocalAddress

答えて

119

v2.0.0より前のelasticsearchでは、httpトランスポートと内部elasticsearchトランスポートの両方をlocalhostのみでリッスンするには、elasticsearch.ymlファイルに次の行を追加するだけです。

network.host: "127.0.0.1" 

httpトランスポートだけでlocalhostでリッスンする場合は、代わりに次の行を追加します。

http.host: "127.0.0.1" 

v2.0から開始して、elasticsearchはデフォルトでlocalhostでのみリッスンします。したがって、追加の構成は必要ありません。

+5

実際には、両方の回答を組み合わせる必要があります。 – user469652

+0

@ user469652あなたはnetwork.hostを設定するだけです。これはhttp.host(とそれ以上)と同じことを実現します。この質問の逆を探して人のために – datashaman

+0

:https://stackoverflow.com/questions/20222093/elasticsearch-listen-to-multiple-ips – JohnLBevan

5

に設定されています。最終的な目標がホストマシン外からの要求を拒否する場合、最も信頼性の高い方法は、ホストのiptablesを変更して、サービスポートへの着信要求を拒否することですElasticSearch(9200-9300)によって使用されています。

最終目標は、誰もが排他的なDNSを使用してサービスを指していることを確認することであるならば、あなたは、このようなのHTTPdやnginxのようすることができますプロキシ要求HTTPサーバでこれを達成する方がいいでしょう。

+0

私の最初のアイデアでしたが、弾力性のある構成がないかどうか疑問に思っていました。ありがとう。 – smolnar

+0

@smolnar - elasticsearchはあなたを直接助けることができないかもしれません、それはWebサーバー/ファイアウォールではありません。 nginxのようなWebサーバーの背後で実行すると、より多くの制御が可能になります。少なくともそれは私がしたことです。 –

+0

リブート時にiptableルールがロードされていることを確認してください。ルールを更新するためにスクリプトで+ xを設定するのを忘れたので、私はサーバーをハックしました。 –

1

私は、このパラメータを使用します。

http.host: "127.0.0.1"

このパラメータは、外部からの要求のためのHTTP要求を受け入れません。

関連する問題