在nginx后面使用GitLab启用了basic_auth?

我已经成功地安装了GitLab来pipe理私有仓库(这真是太棒了!)。

我遇到的问题是默认情况下,当任何人点击我的子域名时,会显示Gitlablogin。 我希望在用户获得GitLablogin屏幕之前用basic_auth层保护整个区域。 不幸的是,这打破了我在GitLab启用时的推/拉function。

我的nginxconfiguration启用basic_auth:

auth_basic "Restricted"; auth_basic_user_file htpasswd; 

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

添加到/etc/gitlab/gitlab.rb

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

并运行gitlab-ctl reconfigure

此刻的一种黑客,但给这是一个镜头。

编辑您的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时查看日志,则向服务器发出是否允许该请求的请求。 而在标准的nginx配置与htpasswd该请求将被阻止,因为服务器不知道所需的身份验证。

无论如何不知道是否有更好的选择(找不到),但这似乎为我工作。

你的问题是你想设置一个密码限制来公开访问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