自托管的 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
实例内部的 curl
到 elasticsearch
得到正常的 "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;
}
}
}
我们决定 运行 一个带有 docker
图片 kibana:5.1.1
的自托管 kibana
站点(以与 AWS elasticsearch
版本兼容),因为安全原因。
但是,在设置完所有内容后,kibana
站点显示空白页面。 Kibana
日志显示没有错误,并且 kibana
实例内部的 curl
到 elasticsearch
得到正常的 "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;
}
}
}