通过IP和Nginx限制Gitlab访问

时间:2015-09-04 17:28:28

标签: security nginx gitlab

我在Nginx上运行了一个公共的Gitlab安装工作,我想限制它访问IP地址的白名单。

我试图在nginx中添加一个基本限制,如下所示:

location @gitlab {
    allow 127.0.0.1;
    allow XXX.XXX.XXX.XXX;
    deny all;
    ...
}

它有点工作,因为只有允许的IP才能通过gitlab的web界面。 但是当从这些允许的IP推送内容时,我得到了这个错误:

Pushing to http://my.server:port/myrepo.git
POST git-receive-pack (451 bytes)
remote: GitLab: API is not accesible        
To http://my.server:port/myrepo.git
! [remote rejected] master -> master (pre-receive hook declined)
error: failed to push some refs to 'http://my.server:port/myrepo.git'

怪异。我也尝试过使用ngx_http_geo_module,结果相同。 有人知道如何完成这项工作吗?

由于

1 个答案:

答案 0 :(得分:0)

好的,看了gitlab_error.log后,我发现我也必须将我服务器的公共IP列入白名单:

[error] 13629#0: *380 access forbidden by rule, client: YYY.YYY.YYY.YYY, server: my.server, request: "POST //api/v3/internal/allowed HTTP/1.1", host: "my.server:port"

所以最后,我的nginx配置看起来像这样,现在一切都很好:

location @gitlab {
allow 127.0.0.1;
allow XXX.XXX.XXX.XXX;
allow YYY.YYY.YYY.YYY;
deny all;
...

}

简单......

我不知道这是一个错误还是什么,因为我使用旧的7.6版本的gitlab。我很快就会进行更新,并会对此进行检查。