Docker+ELK+nginx二级目录+认证授权

Docker大法好

1. docker安装ELK

  • Pull elk镜像
    docker pull sebp/elk
  • 宿主机目录准备
    mkdir -p /data/elk/conf.d

mkdir -p /data/elk/data

  • 上传log配置文件及kibana配置文件到/data/elk/conf.d/

    kibana配置文件如下:
        server.host: "0.0.0.0"
        server.basePath: "/log"
        server.rewriteBasePath: true
        i18n.locale: "zh-CN"
    其中:
        server.basePath:如果您在代理后面运行,则可以指定安装Kibana的路径。使用server.rewriteBasePath设置告诉Kibana是否应从其收到的请求中删除basePath,并防止在启动时发生弃用警告。此设置不能以斜杠(/)结尾。
        server.rewriteBasePath:默认值:false指定Kibana是否应重写以server.basePath为前缀的请求,或者要求它们由反向代理重写。在Kibana 6.3之前,此设置实际上始终为false,并且在Kibana 7.0中默认为true。
    
  • 运行
    docker run -d -p 5601:5601 -p 9200:9200 -p 5044:5044 -p 3000:3000 -e ES_MIN_MEM=1g -e ES_MAX_MEM=2g -v /data/elk/data:/var/lib/elasticsearch -v /data/elk/conf.d/logstash-tcp.conf:/etc/logstash/conf.d/30-output.conf -v /data/elk/conf.d/kibana.yml:/opt/kibana/config/kibana.yml -v /etc/localtime:/etc/localtime:ro --name elk sebp/elk

2. 生成授权文件

yum install -y httpd-tools
htpasswd -bc /data/nginx/conf/conf.d/htpasswd.users admin '12#$56'
cat /data/nginx/conf/conf.d/htpasswd.users

3. nginx配置二级目录代理

配置如下:

    server {
        listen       80;
        server_name  127.0.0.1 localhost;
        access_log   off;

        location ^~ /log {
            allow all;
            auth_basic "Restricted Access";
            auth_basic_user_file /data/nginx/conf/conf.d/htpasswd.users;      #登录验证

            proxy_pass http://<IP>:5601/log; 
            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;
        }
        ...
    }

访问地址:http://IP
用户名:admin
密码:12#$56

DockernginxELK