我在生产服务器上运行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_certificate
和ssl_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