docker搭建es,kibana,nginx 实现认证登录kibana访问es

最近搞了一个阿里云轻量应用服务器,就想捣腾一番。试着用了docker搭建es,kibana,nginx 实现认证登录kibana,中途遇到一些坑。这里记录一下,帮助有需要的人。

效果如下:

这里我使用的系统是Centos7!!!

1. 首先要搞定的的是docker

centos 系统中docker必须在内核版本高于 3.10的环境中才能运行 ,所以来检查一下自己的系统是否满足条件吧。

1.1 执行下面的命令(显示内核版本):
uname -r
1.2 安装docker
yum -y install docker-ce

就是上面一行代码就可以安装好docker,使用yum docker的安装还是比较简单的,这里的docker-ce其实是社区免费版,docker也有商业版,不过要收费。

1.3 启动docker
systemctl start docker

docker中的基本命令

2. 然后要搞定的的是esnginxkibana镜像下载

docker安装elasticsearch也是很方便的,我们可以先用dockersearch命令搜索一下。

docker search elasticsearch


按照名称下载第一个就可以了
默认是下载最新版的,如果要指定版本,可以直接进docker hub
image.png

这里我直接下载最新版的

docker pull elasticsearch

同样的方式我这里就一起将nginx和kibana一起下载了。

docker pull nginx
docker pull kibana

命令执行完。我们就可以通过docker imagesdocker image ls查看下载好的镜像了。


这里有一点要注意,kibana的版本要和elasticsearch保持一致。

3. 接着要搞定的的是esnginxkibana容器运行

首先把网络创建出来,docker network命令,使用方式如下图

使用命令创建网络:
docker network create es-net
然后把容器搞起来,使用如下命令即可:

es:

docker run -d -p 9200:9200  --network es-net --name es docker.id/elasticsearch(或使用镜像id)

docker run -e ES_JAVA_OPTS="-Xms1024m -Xmx1024m" -e "discovery.type=single-node" -d -p 9200:9200 -p 9300:9300 --name es elasticsearch

kibana:

docker run -p 5601:5601 --name kibana --network es-net  -e \ 
"elasticsearch.hosts=http://es:9200"  -d docker.id/kibana(获取镜像id)

nginx

docker run --name nginx -p 80:80 --network es-net \ 
-v /home/nginx/conf/nginx.conf:/etc/nginx/nginx.conf \ 
-v /home/nginx/conf.d:/etc/nginx/conf.d \ 
-v /home/nginx/www:/usr/share/nginx/html \ 
-d docker.io/nginx

这个时候容器就都创建好并且运行起来了。
后面只需要进入各个容器中将配置文件改成自己需要的就既可以了。

4. 接着要搞定配置文件

nginx设置了挂载目录和配置文件,直接在本地文件系统中/home/nginx/conf/nginx.conf编辑这个文件就可以。刚开始是没有这个文件的,我们需要自己创建。也可以直接复制nginx容器中的进行编辑。


/home/nginx/conf/nginx.conf

worker_processes  1;

error_log  /var/log/nginx/error.log warn;
pid        /var/run/nginx.pid;


events {
    worker_connections  1024;
}


http {
    include       /etc/nginx/mime.types;
    default_type  application/octet-stream;

    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

    access_log  /var/log/nginx/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    keepalive_timeout  65;
    
    gzip on;
    #需要压缩文件的最小尺寸,单位是B
    gzip_min_length  1000;
    #gzip文件缓存大小
    gzip_buffers     4 8k; # 4和8之间有个空格的啊
    #gzip压缩文件格式,以下涵盖了一般所需的类型
    gzip_types       text/plain application/x-javascript text/css application/xml application/javascript application/json;
    #gzip压缩等级,数值越高压缩得越狠,也越占资源
    gzip_comp_level 3;

    include /etc/nginx/conf.d/*.conf;
}

/home/nginx/conf.d/kibana.conf

server{

listen 80;
server_name  kibana.infomany.cn;

location / {
    # 设置 auth
    auth_basic "kibana login auth";
    auth_basic_user_file /etc/nginx/conf.d/.htpasswd;

    # 转发到 kibana
    proxy_pass http://kibana:5601;
    proxy_redirect off;
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}

nginx只需要配置上面两个就可以了,这样就可以实现kibana认证登录才能访问了。

5. 遇到的坑和要注意的事项

  1. 上面创建容器时配置了端口映射,但是还是访问不到的,可能你防火墙限制了


    阿里云防火墙配置图
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容