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

Self hosted kibana 5.1.1 showing blank pages after connected to AWS Elasticsearch 5.1.1

我们决定 运行 一个带有 docker 图片 kibana:5.1.1 的自托管 kibana 站点(以与 AWS elasticsearch 版本兼容),因为安全原因。

但是,在设置完所有内容后,kibana 站点显示空白页面。 Kibana 日志显示没有错误,并且 kibana 实例内部的 curlelasticsearch 得到正常的 "you know, for 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

此实例托管在 oauth2 proxy and elb.

后面的私有子网中

事实证明,oauth2 代理正在将授权 headers 传递给 kibana,并且 kibana 默认将其传递给 elasticsearch。 AWS elasticsearch,在授权 header 存在的情况下,要求所有请求都使用 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;
        }
    }
}