8

我已经成功安装了 GitLab 来管理私有存储库(这太棒了!)。

我遇到的问题是默认情况下,当有人点击我的子域时会显示 Gitlab 登录。我想在用户获得 GitLab 登录屏幕之前用 basic_auth 层保护整个区域。不幸的是,这破坏了我在启用 GitLab 时推/拉的能力。

我的 nginx 配置启用 basic_auth:

  auth_basic            "Restricted";
  auth_basic_user_file  htpasswd;

关于如何在不破坏 git / gitlab 功能的情况下启用 basic_auth 的任何想法?

4

3 回答 3

8

将此添加到/etc/gitlab/gitlab.rb

nginx['custom_gitlab_server_config'] = "auth_basic 'Restricted';\n  auth_basic_user_file htpasswd;\n"

并运行gitlab-ctl reconfigure

于 2015-04-02T13:53:21.820 回答
2

目前有点破解,但试一试。

编辑您的 nginx 站点配置以添加/修改以下位置

location ^~ /api/v3/internal/allowed {
    proxy_read_timeout 300; # https://github.com/gitlabhq/gitlabhq/issues/694
    proxy_connect_timeout 300; # https://github.com/gitlabhq/gitlabhq/issues/694
    proxy_redirect     off;

    proxy_set_header   X-Forwarded-Proto $scheme;
    proxy_set_header   Host              $http_host;
    proxy_set_header   X-Real-IP         $remote_addr;

    proxy_pass http://gitlab;}

location / {
    auth_basic "Gitlab Restricted Access";
    auth_basic_user_file  /home/git/gitlab/htpasswd.users;
    # serve static files from defined root folder;.
    # @gitlab is a named location for the upstream fallback, see below
    try_files $uri $uri/index.html $uri.html @gitlab;
}

将您的 @gitlab 位置块保持原样。

诀窍是让 /api/v3/internal/allowd 绕过身份验证。如果您在执行 git pull / push 时查看日志,则会向服务器发出请求是否允许。在带有 htpasswd 的标准 nginx 配置中,该请求将被阻止,因为服务器不知道所需的身份验证。

无论如何,不​​确定是否有更好的选择(找不到),但这似乎对我有用。

于 2013-09-09T03:18:13.647 回答
0

您的问题是您想为公共访问 GitLab 设置密码限制,但让 Gitlab-Shell 不受限制地访问本地 GitLab 实例。

根据 IP 接口,您可以有 2 个 nginx 配置。将行更改listen 0.0.0.0:80 default_serverlisten 127.0.0.1:80 default_server

https://github.com/gitlabhq/gitlabhq/blob/v7.7.2/lib/support/nginx/gitlab#L37-38

于 2015-02-03T12:27:48.377 回答