我在k8s的docker容器中运行了一个kibana。我将nginx作为sidecar,根据路径将所有流量转发到kibana。
下面是我的nginx配置。它在elasticsearch上运行得很好。但当我在浏览器中打开/kibana/时,它会重定向到/spaces/enter并显示404 Not Found。
在kibana容器日志中,我可以看到302转发日志:
{"type":"response","@timestamp":"2021-02-24T05:50:32Z","tags":[],"pid":7,"method":"get","statusCode":302,"req":{"url":"/","method":"get","headers":{"connection":"Keep-Alive","proxy-connection":"Keep-Alive","host":"kibana-entrypoint:5601","x-forwarded-for":"49.255.115.150","x-forwarded-proto":"http","x-forwarded-port":"80","x-amzn-trace-id":"Root=1-6035e928-603d67da7eff4225005fdbfc","upgrade-insecure-requests":"1","user-agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 11_1_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.182 Safari/537.36","accept":"text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9","accept-encoding":"gzip, deflate","accept-language":"en-GB,en-US;q=0.9,en;q=0.8"},"remoteAddress":"192.168.1.41","userAgent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 11_1_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.182 Safari/537.36"},"res":{"statusCode":302,"responseTime":7,"contentLength":9},"message":"GET / 302 7ms - 9.0B"}
user nginx;
worker_processes 1;
events {
worker_connections 10240;
}
http {
server {
listen 8080;
server_name localhost;
location /es/ {
proxy_pass http://sample-es-entrypoint:9200/;
}
location /health {
proxy_pass http://sample-es-entrypoint:9200/_cluster/health;
}
location /kibana/ {
proxy_pass http://kibana-entrypoint:5601/;
proxy_redirect off;
proxy_buffering off;
proxy_http_version 1.1;
proxy_set_header Connection "Keep-Alive";
proxy_set_header Proxy-Connection "Keep-Alive";
}
}
}问题是为什么kibana会转发这个请求?
发布于 2021-02-24 14:58:35
elastic/kibana PR 66098提到,空间选择器UI使用/spaces/enter视图将用户发送到适当的默认路由。
PR 44678解释了空间概念的起源:
此选项不推荐使用
server.defaultRoutefromkibana.yml设置(#46787),而是支持可通过UI控制的高级设置。
通过将此设置设置为高级设置,它天生就具有空间感知能力,因此用户可以为每个空间指定一个自定义默认路由。
过渡
如果在kibana.yml中指定了server.defaultRoute,则会将其映射到uiSettings.overrides.defaultRoute设置。
此设置通知UI设置服务defaultRoute设置已锁定,无法通过UI进行编辑。
从迁移的角度来看,这在功能上等同于在次要版本中升级的用户:该设置只能通过yml文件进行控制。
功能
希望利用空间感知路由的用户只需从yml文件中删除server.defaultRoute设置(如果已设置)。
如果未设置,则高级设置默认为/app/kibana,这是以前server.defaultRoute的默认值。
因此,对于您的情况,请检查Kibana Docker镜像使用的kibana.yml:如果设置了server.defaultRoute,请尝试并将其删除。
https://stackoverflow.com/questions/66345473
复制相似问题