2016-02-22 1 views
6

नीचे जेनकींस के लिए मेरी nginx कॉन्फ़िगरेशन फ़ाइल है। इसमें से अधिकांश ठीक है जैसा कि मैंने प्रलेखन में पढ़ा है।जेनकींस/निगेंक्स - डबल मूलभूत के लिए प्रेरित, क्यों? एक आंतरिक जेनकिन्स लेखक क्यों है?

कॉन्फ़िग फ़ाइल:

upstream app_server { 
    server 127.0.0.1:8080 fail_timeout=0; 
} 

server { 
    listen 80; 
    listen [::]:80 default ipv6only=on; 
    server_name sub.mydomain.net; 

location ^~ /jenkins/ { 

    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
    proxy_set_header Host $http_host; 
    proxy_redirect off; 

    if (!-f $request_filename) { 
     proxy_pass http://app_server; 
     break; 
    } 

    auth_basic "[....] Please confirm identity..."; 
    auth_basic_user_file /etc/nginx/.htpasswd; 
} 

}

जब http://sub.mydomain.net/jenkins मैं सर्वर के साथ अपने मूल प्रमाणीकरण के लिए संकेत करने के लिए नेविगेट कहते हैं: [....] कृपया पुष्टि की पहचान ...

यह सही है, लेकिन जैसे ही एक मैं एक बार फिर मूल प्रमाणीकरण के लिए उचित क्रेडेंशियल्स मैं तो मिल के लिए कहा जाए दर्ज फिर, लेकिन इस बार: सर्वर का कहना है: जेनकींस

यह दूसरा छुपा मूल_आथ कहां से आ रहा है ?! यह मुझे कोई समझ नहीं रहा है।

साधते पहले शीघ्र पर रद्द मैं तो सही ढंग से प्राप्त एक 401 प्राधिकरण की आवश्यकता त्रुटि।

साधते दूसरा मूल प्रमाणीकरण पर रद्द ("सर्वर का कहना है: जेनकींस") मैं:

HTTP ERROR 401 

Problem accessing /jenkins/. Reason: 

Invalid password/token for user: _____ 
Powered by Jetty:// 

किसी को भी पता है क्या संभवतः हो रहा है?

उत्तर

19

मूल_एथ के साथ किसी भी अन्य अनुप्रयोग के लिए रिवर्स प्रॉक्सी के रूप में उपयोग किए गए Nginx की खोज करके मेरी समस्या का समाधान मिला।

समाधान जवाब यहाँ पाया गया था: https://serverfault.com/questions/511846/basic-auth-for-a-tomcat-app-jira-with-nginx-as-reverse-proxy

लाइन मैं अपने nginx विन्यास से लापता था किया गया था:

# Don't forward auth to Tomcat 
proxy_set_header Authorization ""; 

डिफ़ॉल्ट रूप से, ऐसा लगता है कि मूल प्रमाणीकरण Nginx होगा अतिरिक्त आगे प्रमाणन के बाद जेनकिंस के शीर्षलेख और यही मेरी समस्या का कारण बन रहा था। जेनकिंस ने अग्रेषित ऑथ हेडर प्राप्त किए और फिर सोचते हैं कि इसे खुद को अधिकृत करने की आवश्यकता है ?!

यदि हम उपरोक्त दिखाए गए अनुसार किसी भी प्राधिकरण शीर्षलेख को आगे बढ़ाने के लिए हमारी रिवर्स प्रॉक्सी सेट नहीं करते हैं तो सबकुछ इसके जैसा काम करता है। Nginx basic_auth को संकेत देगा और सफल लेख के बाद हम अपने रिवर्स प्रॉक्सी को अग्रेषित करते समय ऑथ हेडर को स्पष्ट रूप से साफ़ (रीसेट?) कर देंगे।

+1

आपको बहुत धन्यवाद, जिसने मेरी समस्या हल की। खोज और googling के घंटों के बाद ... – sh0umik

1

मुझे यह समस्या भी थी, मेरे मामले में जेनकिंस में सुरक्षा सक्षम होने के कारण, सुरक्षा को अक्षम करने से समस्या हल हो गई।

उनके डॉक्स के अनुसार:

आप अपाचे में अभिगम नियंत्रण करते हैं,, जेनकींस में सुरक्षा को सक्षम नहीं करते के रूप में उन दो बातें दूसरे के साथ हस्तक्षेप करेगा।

https://wiki.jenkins-ci.org/display/JENKINS/Apache+frontend+for+security

क्या हो रहा प्रतीत हो रहा है कि nginx जेनकींस को auth_basic प्रतिक्रिया है, जो जवाब में auth_basic प्रदर्शन करने के लिए प्रयास करता है अग्रेषित करता है। मुझे अभी तक इस मुद्दे पर एक संतोषजनक समाधान नहीं मिला है।

+0

प्रतिक्रिया के लिए धन्यवाद! जैसा कि आप नीचे देखेंगे, मुझे हमारे मुद्दे पर संकल्प मिला, लेकिन मुझे लगता है कि आपका डॉक्टर लिंक वास्तव में भविष्य के मुद्दों को दिखाने और अंतर्दृष्टि के लिए खुश साबित हो सकता है। आपके डॉक्टर लिंक से पहले यह कहता है, _ "यह दृष्टिकोण उपयुक्त है यदि अभिगम नियंत्रण की आवश्यकता सरल है (जैसे कि सभी लोगों से जेनकिंस छुपाएं), लेकिन यदि आप अधिक जटिल सेट अप करना शुरू करते हैं तो यह टूटना पड़ता है ... "_ - हम किसके लिए जा रहे हैं? मैं संगठन में लोगों को अभी भी जेनकींस (nginx मूल auth के माध्यम से) तक पहुंचने की अनुमति देना चाहता हूं, लेकिन इसे संशोधित नहीं करना चाहता हूं। –

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