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

时间:2017-03-12 07:33:59

标签: amazon-web-services docker elasticsearch-5 kibana-5

出于安全原因,我们决定使用kibana图片docker运行自托管kibana:5.1.1网站(与AWS elasticsearch版本兼容)。

但是,在设置好所有内容后,kibana网站会显示空白页面。 Kibana日志显示没有错误,curl实例内的elasticsearchkibana获得正常的“您知道的搜索”响应。有谁知道我错过了什么?

以下是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和elb后面的私有子网中。 enter image description here

2 个答案:

答案 0 :(得分:1)

原来oauth2代理将授权标头传递给kibana,默认情况下将kibana传递给elasticsearch。在存在授权标头时,AWS elasticsearch要求所有请求都使用IAM标识进行签名,而我不会这样做。我将以下内容添加到kibana.yml

后,一切正常
elasticsearch.requestHeadersWhitelist: []

答案 1 :(得分:0)

过去几天我遇到过类似的问题。但是,我最终设法使用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;
        }
    }
}