簡體   English   中英

在nginx后面使用GitLab啟用basic_auth?

[英]Using GitLab behind nginx enabled basic_auth?

我已經成功安裝了GitLab來管理私有存儲庫(它非常棒!)。

我遇到的問題是默認情況下,當有人點擊我的子域時會出現Gitlab登錄。 在用戶獲取GitLab登錄屏幕之前,我想用basic_auth層保護整個區域。 不幸的是,當它啟用時,這會破壞我從GitLab推/拉的能力。

我的nginx配置啟用basic_auth:

  auth_basic            "Restricted";
  auth_basic_user_file  htpasswd;

關於如何在不破壞git / gitlab功能的情況下啟用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時查看日志,則會向服務器發出是否允許它的請求。 在帶有htpasswd的標准nginx配置中,該請求將被阻止,因為服務器不知道所需的身份驗證。

無論如何不確定是否有更好的選擇(找不到任何)但這似乎對我有用。

您的問題是您希望為GitLab的公共訪問設置密碼限制,但讓Gitlab-Shell無限制地訪問本地GitLab實例。

您可以擁有2個nginx配置,具體取決於IP接口。 更改行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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM