gitlab 403

gitlab 前端通過一個nginx代理後,某天訪問的時候發現nginx報502錯誤html

經查詢發現是某用戶認證失敗,致使gitlab爲了安全把遠程ip禁用掉了前端

./redis-cli keys '*' | grep 'rack::attack' 
cache:gitlab:rack::attack:allow2ban:ban:10.5.0.42
cache:gitlab:rack::attack:allow2ban:ban:10.5.0.46

臨時解決辦法爲清掉redis裏的改數據
./redis-cli keys '*' | grep 'rack::attack' | xargs .nginx

解決方法一:

在gitlab.rb裏找到下面配置,將ip加入白名單或者增長maxretrygit

gitlab_rails['rack_attack_git_basic_auth'] = {
   'enabled' => true,
   'ip_whitelist' => ["127.0.0.1"],
   'maxretry' => 10,
   'findtime' => 60,
   'bantime' => 3600
 }

解決方法二:

因爲通過的前邊的nginx反向代理,因此gitlab獲取到的遠程ip爲nginx的ip,並不是用戶的真實ip
在gitlab.rb 裏找到以下配置,將nginx的ip加入到real_ip_trusted_address,而且將real_ip_header修改成前端nginx自定義的header,這樣gitlab就能經過自定義的header獲取用戶的真實ipredis

nginx['real_ip_trusted_addresses'] = ['10.5.0.46','10.5.0.42']
nginx['real_ip_header'] = 'X-Forwarded-For'
nginx['real_ip_recursive'] = 'on'

參考:
https://docs.gitlab.com/omnibus/settings/nginx.html安全

相關文章
相關標籤/搜索