问题
访问 gitlab 报错 403 forbidden
排查
-
查看实时 logs
# 查看所有的logs; 按 Ctrl-C 退出 sudo gitlab-ctl tail # 拉取/var/log/gitlab下子目录的日志 sudo gitlab-ctl tail gitlab-rails # 拉取某个指定的日志文件 sudo gitlab-ctl tail nginx/gitlab_error.log
-
查看历史日志
历史日志的持久化需要提前在
/etc/gitlab/gitlab.rb
中设置。因为没有提前设置,所以这里无法查看。
omnibus-gitlab生成logs用的Runit-managed服务是svlogd, 关于svlogd的详细介绍, 请查看svlogd documentation。
但是经过搜索引擎查出问题是有用户频繁操作,触发了 gitlab 的防爆破机制,导致 403 forbidden。
解决
-
进入redis,执行下面的命令,删除被墙的IP地址
/opt/gitlab/embedded/bin/redis-cli -s /var/opt/gitlab/redis/redis.socket keys '*' | grep 'rack::attack' | xargs /opt/gitlab/embedded/bin/redis-cli -s /var/opt/gitlab/redis/redis.socket DEL
执行结果如下
[root@localhost gitlab]# /opt/gitlab/embedded/bin/redis-cli -s /var/opt/gitlab/redis/redis.socket keys '*' | grep 'rack::attack' | xargs /opt/gitlab/embedded/bin/redis-cli -s /var/opt/gitlab/redis/redis.socket DEL (integer) 1
-
重启 gitlab
gitlab-ctl restart
-
gitlab 恢复正常