今天接到上级指示,对外开放的端口的可视化服务全部都要做权限控制,虽然这些端口在阿里云已经设置白名单,但是这样安全系数还是不完善,所以考虑在所有可视化服务商拦截一层,设计如下:
主服务机器:核心业务跑上面
可视化机器:kibana,rabbit可视化,grafana等等可视化服务...
---
在主服务器上部署nginx docker,利用nginx auth模块做登录权限认证.
比如主服务器15601端口认证成功,那么就转发到内网的一台机器的5601端口
---
1. docker pull nginx
2. 设置nginx配置文件,用于挂载共享目录
server {
listen 15601;
server_name localhost;
access_log /var/log/nginx/access.log main;
location / {
# 权限的描述
auth_basic "Auth";
# 指定认证文件
auth_basic_user_file /root/elk_passwd;
root html;
index index.html index.htm;
# 代理的访问地址是Kibana的地址
proxy_pass http://192.168.201.16:5601;
# 只允许公司的外网IP + 局域网IP可以访问 这些如果在阿里安全组配置就不用配置了
# allow 111.**.**.***;
# allow 192.1.1.0/255;
# deny all;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
3.创建认证文件的账号密码
htpasswd -c -d /root/elk_passwd elk
4.启动docker
docker run -itd --name nginx_acl \
-p 15601:15601 \
-p 15602:15602 \
-p 15672:15672 \
-v /root/docker/acl:/etc/nginx/conf.d \
nginx
注意事项:
(1) nginx报错 open permission 错误,如果你对认证文件设置chmod解决不了,那么请修改nginx.conf,启动用户设置为root
(2) /var/log/nginx/access.log 这个文件要提前创建不然nginx启动会报错,最好能根据自己的需求重新commit镜像
效果: