2013-04-15 9 views
7

プライベートレポジトリの管理用にGitLabをインストールしました(これは素晴らしいことです)。nginxの背後でGitLabを使用すると、basic_authが有効になりますか?

私が抱えている問題は、デフォルトでは誰でも私のサブドメインにアクセスしたときに表示されます。私は、ユーザーがGitLabログイン画面を取得する前にbasic_authレイヤーで全領域を保護したいと思います。残念ながら、GitLabが有効になっているときにGitLabをプッシュ/プルする能力が損なわれます。

BASIC_AUTHを有効にするには、私のnginxの設定ファイル:

auth_basic   "Restricted"; 
    auth_basic_user_file htpasswd; 

私はgitの/ gitlab機能を壊すことなくBASIC_AUTHを有効にする方法上の任意のアイデア?

+0

を実行します:あなたが唯一のSSH経由でリポジトリにアクセスし、HTTP基本認証でGitLabを守りたいしている場合、ニコラスBADIAの答えは、あなたが探しているものです。 – lutuh

答えて

2

現在のところハックの種類はありますが、これはショットです。あるとしてあなた@gitlab特定ブロックを残して次の場所

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; 
} 

を変更/追加する

編集しnginxのサイトの構成。

あなたは/ api/v3/internal/allowdに認証をバイパスさせます。 git pull/pushを実行したときにログを見ると、許可するかどうかのリクエストがサーバに送信されます。また、標準のnginx configでhtpasswdを実行すると、サーバは認証に必要な情報がないため、リクエストはブロックされます。

もっと良い選択肢があるかどうかはわかりませんが(これは何も見つかりませんでしたが)、これは私にとってはうまくいくようです。

0

あなたの問題は、GitLabへのパブリックアクセスのパスワード制限を設定したいが、Gitlab-Shellが制限なしでローカルのGitLabインスタンスにアクセスできるようにすることです。

IPインターフェイスに応じて、2つのnginx設定を使用できます。 listen 0.0.0.0:80 default_server行をlisten 127.0.0.1:80 default_serverに変更します。

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

6

/etc/gitlab/gitlab.rbにこれを追加します。

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

と仲間の探索のためにgitlab-ctl reconfigure

関連する問題