自助托pipe的kibana 5.1.1在连接到AWS Elasticsearch 5.1.1后显示空白页面

由于安全原因,我们决定使用kibana image kibana:5.1.1 (为了与AWS elasticsearch版本兼容)运行一个自承载的kibana站点。

但是,设置完毕后, kibana网站显示空白页面。 Kibana日志显示没有错误,并从kibana实例内部的kibana curl得到正常的“你知道,search”的回应。 有谁知道我错过了什么?

以下是kibana设置:

 server.port: 5601 server.host: "0.0.0.0" elasticsearch.url: "http://some-es-instance.ap-northeast-1.es.amazonaws.com:80" elasticsearch.preserveHost: true kibana.index: ".kibana-dev" kibana.defaultAppId: "discover" elasticsearch.ssl.verify: false elasticsearch.requestTimeout: 300000 elasticsearch.shardTimeout: 0 elasticsearch.startupTimeout: 5000 logging.quiet: true logging.verbose: false 

这个实例被托pipe在oauth2代理和elb后面的私有子网中。 在这里输入图像说明

事实certificate,oauth2代理默认将授权标头传递给kibana和kibana,并将其传递给elasticsearch。 AWS elasticsearch在授权头存在的情况下,要求所有请求都使用IAM身份进行签名,而我并没有这样做。 在将以下内容添加到我的kibana.yml后,一切都开始正常工作:

 elasticsearch.requestHeadersWhitelist: [] 

过去几天我一直有类似的问题。 不过,我最终设法使用nginx作为反向代理来解决这个问题。 nginx运行在EC2实例上,并直接连接到AWS ES上的Kibana。

尝试使用下面的nginx.conf文件

 worker_processes 1; events { worker_connections 1024; } http { server { listen 80; server_name localhost; # redirect / location = / { rewrite ^ /_plugin/kibana/ redirect; } location / { proxy_pass https://<es-domain-url>.es.amazonaws.com; proxy_http_version 1.1; proxy_set_header Authorization ""; proxy_hide_header Authorization; proxy_set_header X-Forwarded-Proto $scheme; auth_basic "Restricted"; auth_basic_user_file /etc/nginx/htpasswd.users; } } }