唠叨:
我们公司很少有业务跑在外网上,一般都是内网里跑,对内部提供服务的。
这段时间要过等保,机器做一下安全加固,搞一个黑白名单。
需求:除指定IP外,全部禁止访问。
试了几个 gitlab_rails 的文档,都不行,可能是我用的容器的原因??具体我也搞不太清楚。
就想到用nginx做访问控制。这个我搞过,我kibana的访问控制是用nginx做的。
gitlab本身集成的就有Nginx功能,所以不用再安装nginx,还是挺方便的。
直接进入主题吧!!
进入容器
docker exec -it -u root gitlab /bin/bash
也可以不进容器 在持久化层找到 配置文件,修改好以后 用 docker exec 命令执行 gitlab-ctl reconfigure 就ok了。
修改 /etc/gitlab/gitlab.rb文件
vim /etc/gitlab/gitlab.rb
nginx['custom_gitlab_server_config'] = "location ~* (.*) {
deny 192.168.2.109;
allow 192.168.2.0/24;
deny all;
proxy_cache off;
proxy_pass http://gitlab-workhorse;
root html;
index index.html index.htm;}\n"
-
此处修改不可以设置location /规则,因为gitlab自己的gitlab-http.conf中已经有对应的配置;
-
proxy_cache off;\n proxy_pass http://gitlab-workhorse;\n这两行一定要加,不然全部报404错误
-
root html;\n index index.html index.htm;这两行也要加,因为我们使用location ~* (.*)重置了所有的请求匹配
-
allow 192.168.2.0/24是指192.168.2.0 - 192.168.2.254的ip区段都可以访问, 如果想匹配192.168.*.*可以使用192.168.0.0/16
-
deny 192.168.2.109是指拒绝该主机的访问,如果有更多的主机,可以在下一行继续添加拒绝IP地址: deny 192.168.x.x 实现gitlab的IP黑名单设置
-
deny all除了上面的规则外,拒绝所有其他主机访问。
配置完成后,执行
gitlab-ctl reconfigure
可以重启一下容器,也可以不重启。看心情!!!
开源精神,允许转载。
请标明出处。
2020.07.10 楠有枝 于北京·海淀