出于安全原因,我们决定使用kibana
图片docker
运行自托管kibana:5.1.1
网站(与AWS elasticsearch
版本兼容)。
但是,在设置好所有内容后,kibana
网站会显示空白页面。 Kibana
日志显示没有错误,curl
实例内的elasticsearch
到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 proxy和elb后面的私有子网中。
答案 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;
}
}
}