2013-04-15 4 views
7

मैंने निजी भंडारों के प्रबंधन के लिए सफलतापूर्वक गिटलैब स्थापित किया है (यह बहुत बढ़िया है!)।nginx सक्षम basic_auth के पीछे गिटलैब का उपयोग करना?

मेरी समस्या जो डिफ़ॉल्ट रूप से है, गिटलैब लॉगिन तब प्रस्तुत किया जाता है जब कोई मेरे सबडोमेन को हिट करता है। उपयोगकर्ता को गिटलैब लॉगिन स्क्रीन प्राप्त करने से पहले मैं पूरे क्षेत्र को मूल_एथ परत से सुरक्षित रखना चाहता हूं। दुर्भाग्यवश, यह सक्षम होने पर गिटलैब से धक्का/खींचने की मेरी क्षमता को तोड़ देता है।

मेरी nginx config basic_auth सक्षम करने के लिए:

auth_basic   "Restricted"; 
    auth_basic_user_file htpasswd; 

मैं कैसे Git/gitlab कार्यक्षमता को तोड़ने के बिना basic_auth सक्षम कर सकते हैं पर कोई भी विचार?

+0

साथी खोजकर्ता के लिए: आप केवल SSH के माध्यम से अपने खजाने पर पहुंच रहे हैं और HTTP मूल प्रमाणीकरण के साथ GitLab की रक्षा चाहते हैं निकोलस बाडिया का जवाब वह है जिसे आप ढूंढ रहे हैं। – lutuh

उत्तर

2

इस समय एक हैक की तरह लेकिन यह एक शॉट है।

संपादित करें जोड़ने के लिए अपने nginx साइट विन्यास/अपने @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; 
} 

संशोधित करते हैं।

यह चाल है कि आप प्रमाणीकरण को बाई/एपीआई/वी 3/आंतरिक/स्वीकृत बाईपास करते हैं। यदि आप लॉग को देखते हैं तो जब आप गिट पुल/पुश करते हैं तो सर्वर को अनुरोध किया जाता है कि उसे अनुमति दें या नहीं। और htpasswd के साथ मानक nginx कॉन्फ़िगरेशन पर उस अनुरोध को अवरुद्ध कर दिया जाएगा क्योंकि सर्वर को आवश्यक प्रमाणीकरण के बारे में कोई जानकारी नहीं है।

वैसे भी सुनिश्चित नहीं है कि कोई बेहतर विकल्प है (कोई भी नहीं मिला) लेकिन यह मेरे लिए काम करता है।

0

आपकी समस्या यह है कि आप गिटलैब के लिए सार्वजनिक पहुंच के लिए पासवर्ड प्रतिबंध सेट करना चाहते हैं, लेकिन गिटलाब-शैल को प्रतिबंध के बिना स्थानीय गिटलैब उदाहरण तक पहुंचने दें।

आपके पास आईपी इंटरफ़ेस के आधार पर 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

संबंधित मुद्दे