如何通过HTTPS将Elasticsearch与Nginx连接为反向代理服务器

时间:2017-02-22 23:11:48

标签: nginx elasticsearch proxy

我在生产服务器上运行Elasticsearch 5.0。 我使用Nginx作为反向代理服务器。 我的网站使用Let's Encrypt保护,所以我需要Elasticsearch像这样运行https curl -XGET https://172.31.18.5..........否则我的网站无法从Elasticsearch接收数据。 我已阅读this post,以便使用Nginx为Elasticsearch设置基本身份验证。 帖子建议配置如下。

server {
    listen      80;
    server_name {{ your_search_domain }};
    rewrite     ^ https://$server_name$request_uri? permanent;
}

server {
    listen 443;
    server_name {{ your_search_domain }};
    ssl on;
    ssl_certificate     {{ ssl_dir }}/elasticsearch.crt;
    ssl_certificate_key {{ ssl_dir }}/elasticsearch.key;

   access_log {{ nginx_log_file }};
   error_log {{ nginx_error_file }};

    location / {
        rewrite ^/(.*) /$1 break;
        proxy_ignore_client_abort on;
        proxy_pass http://localhost:9200;
        proxy_redirect http://localhost:9200 http://{{ your_search_domain }}/;
        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;
        auth_basic "Search Authentication";
        auth_basic_user_file {{ nginx_htcontrol }};
    }
}

我更改了{{}}所包围的部分,但无法在https上运行。

它只接受http这样的curl -XGET http://172.31.18.5...........

我可以分别对ssl_certificatessl_certificate_key使用相同的Let's加密证书和密钥吗?

proxy_pass应该是proxy_pass http://172.31.18.5:9200吗?

我的设置

我的群集中只有一个符合主资格的数据节点。

我将number_of_shards设置为1,将number_of_replicas设置为0。

以下是我elasticsearch.yaml的设置。

http.cors.enabled: true
http.cors.allow-origin: /https?:\/\/localhost(:[0-9]+)?/
cluster.name: MyAppName
node.name: ${HOSTNAME}
bootstrap.memory_lock: true
network.host: 172.31.18.5
discovery.zen.minimum_master_nodes: 1

0 个答案:

没有答案