2015-03-09 4 views

ответ

0

Edit: После того, как в чате, ваша проблема оказалась в том, что вы не хотите, чтобы выставить ES в внешний мир, только для вашего приложения. Решение было Привязать ES к локальному интерфейсу, установив:

network.host: 127.0.0.1 

Предыдущий ответ:

Как правило, будет работать Nginx (или другой веб-сервер), который выполняет обычную проверку подлинности, а затем прокси-запросы к Elasticsearch.

Это урезанная конфигурация, которая может вам помочь. Рассмотрите возможность использования SSL/TLS для вашего сервера, так как пароли BasicAuth отправляются в clear в противном случае.

server { 
    listen 80 default_server; 
    server_name your.server.address.com; 
    client_max_body_size 50M; 

    location/{ 
    # Pass requests to ElasticSearch 
    proxy_pass http://localhost:9200; 
    proxy_redirect off; 

    proxy_set_header X-Real-IP $remote_addr; 
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
    proxy_set_header Host $http_host; 

    # For CORS Ajax 
    proxy_pass_header Access-Control-Allow-Origin; 
    proxy_pass_header Access-Control-Allow-Methods; 
    proxy_hide_header Access-Control-Allow-Headers; 
    add_header Access-Control-Allow-Headers 'X-Requested-With, Content-Type'; 
    add_header Access-Control-Allow-Credentials true; 

    # Authorize access 
    auth_basic   "ElasticSearch"; 
    auth_basic_user_file /etc/elasticsearch/passwords; 
    } 
} 
+0

У вас есть что-нибудь для Apache? Я не использую nginx –

+0

Не с головы, но он должен переводить довольно прямо. Настройте vhost, который использует BasicAuth и прокси-серверы для ES. –

+0

Я пытаюсь понять, как это работает. Elasticsearch установлен на том же сервере, что и мое приложение, так что любой vhost я создаю, elasticsearch доступен на порту 9200. Единственный способ, о котором я могу думать, - это когда-нибудь перенаправить весь трафик на порт 9200 на php-скрипт, где я могу проверить для базовой проверки подлинности http? –

Смежные вопросы