用nginx给kibana、elasticsearch做权限认证

最近一直使用logstash+elasticsearch+kibana作日志分析,通过kibana来查看报表的各种panel,但是每次查看都需要拨线上的VPN,比较麻烦,于是就想到用nginx来给kibana和elasticsearch作个权限认证。认证成功的效果如下:

用nginx给kibana、elasticsearch做权限认证

用nginx给kibana、elasticsearch做权限认证

呵呵,得瑟下。好了,废话不多说,直接上配置。

1、配置nginx密码:nginx可以为网站或目录甚至特定的文件设置密码认证。密码必须是crypt加密的。可以用apache的htpasswd来创建密码。

格式为:htpasswd -b -c site_pass username password

site_pass为密码文件。放在同nginx配置文件同一目录下,当然你也可以放在其它目录下,那在nginx的配置文件中就要写明绝对地址或相对当前目录的地址。

配置文件:

nginx_kibana_auth.conf

<pre name="code" class="html">worker_processes  1;

#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;

#pid        logs/nginx.pid;


events {
    worker_connections  1024;
}

http {

include       mime.types;
default_type  application/octet-stream;
 
server {
  listen                *:80 ;
  server_name           ip;
  location / {
    #你的Kibana地址。
    root  /data/kibana;
    index  index.html index.htm;
    auth_basic "Restricted";
	#你的nginx密码文件地址
    auth_basic_user_file /usr/local/nginx/conf/site_pass_team;
  }
 
  location ~ ^/_aliases$ {
    proxy_pass http://ip:9200;
    proxy_read_timeout 90;
  }
  location ~ ^/.*/_aliases$ {
    proxy_pass http://ip:9200;
    proxy_read_timeout 90;
  }
  location ~ ^/_nodes$ {
    proxy_pass http://ip:9200;
    proxy_read_timeout 90;
  }
  location ~ ^/.*/_search$ {
    proxy_pass http://ip:9200;
    proxy_read_timeout 90;
  }
  location ~ ^/.*/_mapping$ {
    proxy_pass http://ip:9200;
    proxy_read_timeout 90;
  }
 
  # Password protected end points
  location ~ ^/kibana-int/dashboard/.*$ {
    proxy_pass http://ip:9200;
    proxy_read_timeout 90;
    limit_except GET {
      proxy_pass http://ip:9200;
      auth_basic "Restricted";
      #你的nginx密码文件地址,如果需要在保存panel时新加认证,多生成一份不用账号密码的文件即可。
      auth_basic_user_file /usr/local/nginx/conf/site_pass_support;
    }
  }
  location ~ ^/kibana-int/temp.*$ {
    proxy_pass http://ip:9200;
    proxy_read_timeout 90;
    limit_except GET {
      proxy_pass http://ip:9200;
      auth_basic "Restricted";
      #你的nginx密码文件地址,如果需要在保存panel时新加认证,多生成一份不用账号密码的文件即可。
      auth_basic_user_file /usr/local/nginx/conf/site_pass_support;
    }
  }
}
}

2、开通外网域名,映射到服务器上nginx监听的80端口。

3、修改kibana下的config.js,将elasticsearch: "http://"+window.location.hostname+":9200",修改为elasticsearch: "http://"+window.location.hostname+":80",即可。

4、启动nginx时指定nginx_kibana_auth.conf配置文件即可。

本文允许转载,但请保留出处:http://anonymman.iteye.com/blog/2138312

相关推荐