0

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

但是,在设置完所有内容后,该kibana站点显示空白页面。Kibana日志显示没有错误,并且curlelasticsearch实例内部kibana得到正常的“你知道,用于搜索”响应。有谁知道我错过了什么?

下面是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 代理和 elb 后面的私有子网中。在此处输入图像描述

4

2 回答 2

1

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

elasticsearch.requestHeadersWhitelist: []
于 2017-03-12T07:50:29.557 回答
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;
        }
    }
}
于 2017-03-18T12:05:08.017 回答