繁体   English   中英

在Nginx后面投放时,Kibana仪表板未加载

[英]Kibana dashboard is not loading when served behind nginx

当我访问在nginx后面设置的Kibana时,由于kibana.bundle.js文件中的错误,仪表板将无法加载。 如果我直接访问Kibana (而不是通过代理), 则不会发生此错误

对于不同的浏览器(Chrome,FF), kibana.bundle.js文件中的错误有所不同。 这是由于有关文件似乎未正确解压缩的事实。

我所有的浏览器都设置为接受gzip编码,而这正是Kibana所提供的。 kibana.bundle.js是一个7mb的文件,压缩后的大小为1.5 如上所述,当我直接访问Kibana时,在客户端上将该文件解压缩就好了。

我的设置的详细信息:

  • 在一个VM(所有版本5.4.0 )中设置ELK (elastichsearch,logstash,kibana)堆栈
  • Kibana为端口443下的https设置(未配置server.basePath)
  • Kibana和elasticsearch都使用x-pack ,虽然不确定是否很重要,但可能会增加优化捆绑包的大小(例如kibana.bundle.js)
  • 在Ubuntu 14 LTS下运行的其他VM中的Nginx设置
  • nginx 将请求转发到另一个代理 我将保留细节,但是此设置是我必须处理的。 但是,当删除nginx并仅在Kibana前面使用第二个代理时,它也可以很好地工作,这毫无价值。

有关nginx配置的详细信息:

我为Kibana实例使用的服务器块的简化版本。 基本上,这将转发到另一个代理,后者将依次在端口443正常位置下访问Kibana。

server {
        server_name blah;
        listen 443 ssl;
        ssl    on;
        ssl_certificate    /etc/nginx/ssl/blah.pem;
        ssl_certificate_key   /etc/nginx/ssl/blah.pem;
        access_log /var/log/nginx/access-blah.log;
        error_log /var/log/nginx/error-blah.log warn;
        location / {
               proxy_pass  http://other_proxy;
               proxy_http_version 1.1;
               proxy_set_header Connection "upgrade";
               proxy_set_header Host $host;
               proxy_set_header X-Real-IP $remote_addr;
               proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
               proxy_set_header X-Forwarded-Proto https;
               proxy_set_header Upgrade $http_upgrade;
               proxy_cache_bypass $http_upgrade;
        }
}

除此之外,我对/etc/nginx/nginx.conf使用默认设置。 我尝试了许多选项(关闭了sendfile;关闭了proxy_buffering;但没有一个起作用)。

测试细节:

使用Chrome或FF进行测试时,我得到了带有预期标题的正常响应,所有请求的处理时间都小于1。

chrome请求到kibana失败

现在,当我直接卷曲捆绑包时,对于直接调用Kibana仍然会收到sub 1s响应,但是当我通过代理卷曲时,会得到以下类型的响应:

curl -v https://blah:443/bundles/kibana.bundle.js?v=15063
...
 99 7111k   99 7087k    0     0   346k      0  0:00:20  0:00:20 --:--:--     0* TLSv1.2 (IN), TLS alert, Client hello (1):
{ [2 bytes data]
* transfer closed with 8192 bytes remaining to read
* Curl_http_done: called premature == 1
* stopped the pause stream!
 99 7111k   99 7103k    0     0   347k      0  0:00:20  0:00:20 --:--:--  3971
* Closing connection 0
} [5 bytes data]
* TLSv1.2 (OUT), TLS alert, Client hello (1):
} [2 bytes data]
curl: (18) transfer closed with 8192 bytes remaining to read

它几乎立即达到99%,但是在剩余的8k字节上20秒后超时。 我从nginx收到错误消息,说上游读取上游时关闭了连接。

我感觉好像某个地方缺少缓冲区大小配置。 希望一些nginx / kibana专家可以帮助我! :) 谢谢!

在nginx空间不足后,发现代理的VM(在tomcat7上运行)。 我清理了几笔日志,发现/tmp上也overflow 使用lsof我发现tomcat正在使用该文件夹。 所以我关闭了tomcat,卸载了溢出的缓存,然后从tomcat清除了缓存,然后重新启动它,它运行正常。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM