我在RHEL 7.2上运行kibana 4.4.1
当kibana.yml文件不包含该设置时,一切正常server.basePath.Kibana成功启动并吐出消息
[info][listening] Server running at http://x.x.x.x:5601/
Run Code Online (Sandbox Code Playgroud)
curl http://x.x.x.x:5601/app/kibana 返回预期的HTML.
但是,当basePath设置 为时server.basePath: "/kibana4",http:// xxxx:5601/kibana4/app/kibana会产生404.为什么?
服务器以相同的日志记录成功启动
[info][listening] Server running at http://x.x.x.x:5601/
Run Code Online (Sandbox Code Playgroud)
但
curl http://x.x.x.x:5601/ 回报
<script>
var hashRoute = '/kibana4/app/kibana';
var defaultRoute = '/kibana4/app/kibana';
...
</script>
Run Code Online (Sandbox Code Playgroud)
curl http://x.x.x.x:5601/kibana4/app/kibana 回报
{"statusCode":404,"error":"Not Found"}
为什么'/ kibana4/app/kibana'会返回404?
server.basePath 不像我预期的那样.
我期待server.basePath对称地影响URL.这意味着请求URL将位于子域/ kibana4下,响应URL也将位于子域/ kibana4下.
不是这种情况.server.basePath不对称地影响URL.这意味着所有请求URL保持不变,但响应URL包含subdomin.例如,仍然可以在http:// xxxx:5601/app/kibana访问kibana主页,但所有hrefs URL都包含子域/ kibana4.
server.basePath 仅在您将请求转发给kibana之前使用删除子域的代理时才有效
下面是我使用的HAProxy配置
frontend main *:80
acl url_kibana path_beg -i /kibana4
use_backend kibana if url_kibana
backend kibana
mode http
reqrep ^([^\ ]*)\ /kibana4[/]?(.*) \1\ /\2\
server x.x.x.x:5601
Run Code Online (Sandbox Code Playgroud)
重要的一点是在reqrep将请求转发给kibana之前从URL中删除子域/ kibana4 的表达式.
| 归档时间: |
|
| 查看次数: |
6812 次 |
| 最近记录: |