ElasticSearch: разрешать только локальные запросы
Как разрешить только локальные запросы для поиска elastics?
Итак, команда вроде:
curl -XGET 'http://localhost:9200/twitter/_settings'
может работать только на localhost и запрашивать:
curl -XGET 'http://mydomain.com:9200/twitter/_settings'
будет отклонено?
Потому что, из того, что я вижу, elasticsearch позволяет это по умолчанию.
EDIT:
Согласно http://www.elasticsearch.org/guide/reference/modules/network.html
вы можете управлять параметром bind_host
, чтобы разрешить хосты. И по умолчанию он установлен на anyLocalAddress
Ответы
Ответ 1
Для elasticsearch до v2.0.0, если вы хотите, чтобы и трафик HTTP, и внутренний транспорт elasticsearch для прослушивания только на localhost, просто добавьте следующую строку в файл elasticsearch.yml
.
network.host: "127.0.0.1"
Если вы хотите, чтобы только HTTP-транспорт для прослушивания на локальном хосте, добавьте следующую строку.
http.host: "127.0.0.1"
Начиная с версии 2.0 elasticsearch по умолчанию прослушивает только локальный хост. Таким образом, дополнительная настройка не требуется.
Ответ 2
Если ваша конечная цель - отклонить любые запросы из-за пределов хост-машины, самым надежным способом было бы изменить хост iptables так что он отклоняет любые входящие запросы на порты обслуживания, используемые ElasticSearch (9200-9300).
Если конечная цель состоит в том, чтобы убедиться, что все ссылаются на услугу с использованием эксклюзивного DNS, вам лучше добиться этого с помощью HTTP-сервера, который может запрашивать прокси-запросы, такие как HTTPd или nginx.
Ответ 3
Я использую этот параметр:
http.host: "127.0.0.1"
Этот параметр не принимает HTTP-запросы для внешнего запроса.