【逗老师带你学IT】Nginx为Kibana添加身份认证

ELK套件里的Kibana社区版本是没有身份认证功能的。网上很多办法都是通过Nginx的auth_basic加一层身份认证。但是经过通读全网一堆文章之后发现

这些文章又特么的全是坑!
照着这些文章干完之后,Nginx大概率报502错误,原因是现在的httpd组件默认不能新建网络连接,只能被动接收连接请求。

在这里插入图片描述
本文就来说一下,到底该如何让Nginx代理Kibana

关于如何快速安装ELK套件,请参见
【逗老师带你学IT】最简单的Elasticsearch+Logstash收集syslog避坑指南

一、安装Nginx和httpd-tools

yum install epel-release
yum update
yum install -y nginx
yum install httpd-tools

二、配置Nginx和Kibana

1、添加秘钥文件

htpasswd -c -b /etc/nginx/passwd/kibana.passwd admin pass******word

保存的秘钥文件路径自己随便设置

2、修改Nginx配置

修改/etc/nginx/nginx.conf,引入./conf.d下面的配置文件

cat /etc/nginx/nginx.conf

worker_processes  1;
events {
    worker_connections  1024;
}

http {
    include       mime.types;
    include /etc/nginx/conf.d/*.conf;
    default_type  application/octet-stream;
}

新建一个配置文件,/etc/nginx/conf.d/kibana.conf ,配置监听80,转到5601,同时添加认证。

cat /etc/nginx/conf.d/kibana.conf 
upstream kibana_server {
        server  127.0.0.1:5601 weight=1 max_fails=3  fail_timeout=60;
}
 
server {
        listen 80; 

        auth_basic "Kibana Auth";
        auth_basic_user_file /usr/local/nginx/passwd/kibana.passwd;

        location / {
            proxy_pass http://localhost:5601;
            proxy_http_version 1.1;
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection 'upgrade';
            proxy_set_header Host $host;
            proxy_cache_bypass $http_upgrade;
        }
}

3、拒绝5601端口直接入站

我们既然想通过Nginx来做认证,那么就要封死原来5601端口直接访问的口子。
有两个办法可以封住

方法一:
使用iptables拒绝TCP 5601端口入站

iptables -I INPUT 1 -p tcp --dport 5601 -j ACCEPT

方法二:
修改Kibana的配置文件
配置server.host字段为localhost,使其仅监听127.0.0.1:5601

cat /etc/kibana/kibana.yml 
server.port: 5601
server.host: "localhost"

三、配置Kibana允许HTTP重定向

完成上面配置之后,你开开心心的尝试访问Kibana。发现身份认证正常,但是赫然出现一个502 Bad Gateway报错。
在这里插入图片描述

惊不惊喜,意不意外?

但是这时候在服务器上直接curl -i http://localhost:5601端口是没问题的,后端服务正常,那么Nginx为什么会报502错误呢?

参考Elastic社区案例,httpd组件默认不能新建网络连接,只能被动接收连接请求。
Nginx Kibana: Bad gateway 502

使用以下命令允许httpd新建网络连接。

setsebool httpd_can_network_connect on -P

吐槽一下,网上的大哥们,你们写完文章都不自己跑一下试试么?

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
要在内网中转发Kibana,您需要使用NGINX作为反向代理服务器。反向代理服务器会接收到来自客户端的所有请求,将它们重定向到相应的服务器,并将响应返回到客户端。这种方法不仅可以保护Kibana服务器,还可以提高性能。 首先,您需要安装NGINX并配置它。您需要创建一个新的server块,并在该块中定义反向代理。以下是一个示例配置: ``` server { listen 80; server_name example.com; location / { proxy_pass http://kibana.example.com:5601/; 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 Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; } } ``` 在上面的配置中,我们定义了一个server块,该块监听端口号为80,并指定了服务器名称为example.com。在location块中,我们将所有请求都转发到Kibana服务器,该服务器位于kibana.example.com域名下的端口号为5601的位置。 接下来,我们使用proxy_set_header指令设置一些HTTP请求头。这些头信息是为了确保Kibana可以正确处理来自代理服务器的请求。其中,Host头字段用于指定Kibana的实际地址;X-Real-IP字段用于指定连接的客户端IP地址,等等。 最后,我们还通过Upgrade和Connection头字段启用了WebSocket协议。Kibana使用WebSocket协议进行实时更新,因此我们需要配置NGINX以支持该协议。 配置完成后,请重新启动NGINX服务器并验证配置是否正确。您可以在浏览器中输入example.com,即可访问Kibana应用程序。如果一切顺利,您现已可以成功地将Kibana通过NGINX转发到内网中的网络。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

逗老师

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值