date: 2020-09-13title: nginx代理kibana #标题
tags: nginx #标签
categories: nginx # 分类

nginx代理kibana时,如果loccation匹配‘/’代理到kibana的话,那没什么坑,比较简单,但如果是要使用nginx的子目录来代理kibana,则需要配置一些东西,而不是常规的proxy_pass就行的,特此记录。
当然,如果你的location /匹配着别的url,无法使用/ 来代理kibana,那么有两种方法,一个呢是上述说的使用nginx的子目录来匹配,另一个呢,就是新增server字段,使用假域名,这样我们就可以写location /来代理kibana了,但是客户端本地需要写hosts解析记录,如果你的nginx使用公网访问并且使用的端口是80或443的话,那么此路是不通的,因为浏览器是会告诉你,此域名未备案,但如果你仅仅是内网访问,那么没关系的。

好了,废话不多说,我们来看使用子目录是怎样代理kibana的。

假设,我们域名为www.hub.com(nginx在监听此域名),想通过www.hub.com/kibana访问到我们的kibana,那么配置如下:

编辑kibana配置文件

修改server.basePath的值为我们想要匹配的子目录,切忌不要以/结尾。

  1. server.basePath: "/kibana"

修改完成后,自行重启kibana。

修改nginx配置文件

Nginx代理 kibana 需要进行rewrite,如下:

  1. server {
  2.       listen 80;
  3.       server_name www.hub.com;
  4.       access_log /var/log/nginx/access-kibana.log;
  5.       error_log /var/log/nginx/error-kibana.log;
  6.       location /kibana {
  7.         proxy_pass http://192.168.20.10:5601/;
  8.         rewrite ^/kibana/(.*)$ /$1 break;
  9.       }
  10.     }

至此配置完成,自行重启nginx,然后访问www.hub.com/kibana验证即可。