2013-04-15 13 views
7

Z powodzeniem zainstalowałem GitLab do zarządzania prywatnymi repozytoriami (to całkiem niesamowite!).Korzystanie z GitLab za Nginx z włączonym basic_auth?

Problem, który mam, domyślnie, logowanie Gitlab jest prezentowane, gdy ktoś trafi w moją subdomenę. Chciałbym chronić cały obszar za pomocą warstwy basic_auth, zanim użytkownik uzyska ekran logowania GitLab. Niestety, to łamie moją zdolność do push/pull z GitLab, gdy jest włączona.

mój nginx config aby umożliwić basic_auth:

auth_basic   "Restricted"; 
    auth_basic_user_file htpasswd; 

pomysłów, w jaki sposób mogę włączyć basic_auth bez zerwania funkcjonalność git/gitlab?

+0

Dla kolegi wyszukiwarki: Jeśli korzystasz swoje repozytoria tylko poprzez SSH i chcą chronić GitLab z podstawowym uwierzytelnianiem HTTP , Odpowiedź Nicolas BADIA jest tym, czego szukasz. – lutuh

Odpowiedz

2

W tej chwili coś w rodzaju włamań, ale daj się zastrzelić.

Edit konfiguracja witryny nginx dodawać/modyfikować następujące lokalizacje

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

Pozostawienie @gitlab lokalizacji bloku, jak jest.

Pozwolenie/api/v3/internal/allowd pomija uwierzytelnianie. Jeśli spojrzysz na logi, gdy wykonasz polecenie git pull/push, zostanie wysłane do serwera żądanie, czy chcesz na to zezwolić. I na standardowej konfiguracji nginx z htpasswd żądanie to zostanie zablokowane, ponieważ serwer nie ma pojęcia o wymaganym uwierzytelnieniu.

W każdym razie nie jestem pewien, czy jest lepsza alternatywa (nie mogłem znaleźć), ale wydaje mi się, że to działa.

6

Dodaj to do /etc/gitlab/gitlab.rb:

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

I uruchomić gitlab-ctl reconfigure

Powiązane problemy