2010-01-06 11 views
16

मैं उबंटू जौन्टी में nginx के साथ काम कर रहे बुनियादी प्रमाणीकरण प्राप्त करने की कोशिश कर रहा हूं। nginx.conf में, मैं सर्वर संदर्भ के तहत इन दो पंक्तियों कहा:nginx और auth_basic

server { 
    ... 
    auth_basic "Restricted Access"; 
    auth_basic_user_file /etc/nginx/.htpasswd; 
    ... 
} 

तब मैं apt-get'ed apache2-utils htpasswd, जो मैं htpasswd फ़ाइल बनाने के लिए इस्तेमाल किया पाने के लिए:

htpasswd -d -c /etc/nginx/.htpasswd joe 

जब मैं साइट तक पहुंचने का प्रयास करता हूं, प्रमाणीकरण संवाद अपेक्षित के रूप में आता है, लेकिन जब मैं उपयोगकर्ता नाम और पासवर्ड डालता हूं, तो यह केवल संवाद बॉक्स को रीफ्रेश करता है। ऐसा लगता है कि मैं इसे प्रदान करने वाला पासवर्ड पसंद नहीं करता हूं। मैंने डीडी विकल्प के साथ और बिना दोनों htpasswd चलाने की कोशिश की, लेकिन अभी भी कोई भाग्य नहीं है। यह प्रमाणित करने से इंकार कर दिया। कोई विचार क्या मैं गलत कर रहा हूँ?

किसी भी मदद की सराहना की जाएगी।

+0

क्या आपने "auth_basic_user_file" के सापेक्ष पथ का प्रयास किया था? – Nakul

+0

@ केपी क्या आप साझा कर सकते हैं कि यह आपके लिए क्या तय करता है? Http: // nginx पर दस्तावेज़ों के अनुसार – codecowboy

उत्तर

25

चीजें मैं जाँच करेगा:

पर
  • अनुमतियां `/ etc/nginx/.htpasswd` - फ़ाइल nginx चल खाते के द्वारा पढ़ा जा सकता है? आप यह सुनिश्चित करने के लिए 'chmod 644` का उपयोग करके अस्थायी रूप से कोशिश कर सकते हैं कि हर कोई इसे पढ़ सके। यदि यह काम करता है, तो आप `chown` और 'chmod` सेटिंग्स के उचित संयोजन को सॉर्ट कर सकते हैं ताकि nginx और you/root इसे पढ़ सकें लेकिन अन्य उपयोगकर्ता (सुरक्षा के लिए) नहीं कर सकते हैं।
  • सुनिश्चित करें कि 'htpasswd` हैश को सही रूप में उत्पन्न कर रहा है; यह आमतौर पर लगभग 13 अल्फान्यूमेरिक वर्ण होते हैं (उदाहरण के लिए 'उपयोगकर्ता नाम: wu.miGq/e3nro`)। आदेश सीएएन एमडी 5 हैश उत्पन्न करता है जो 'उपयोगकर्ता नाम: $ apr1 $ hzB2K ... $ b87zlCYMKufOxn9ol5QV4 /' जैसा दिखता है, ये nginx के साथ काम नहीं करते हैं।
  • nginx के डीबग आउटपुट को बढ़ाने और सुराग के लिए त्रुटि लॉग की जांच करने के लिए देखो।
+4

।संगठन/एन/डॉक्स/http/ngx_http_auth_basic_module.html "एमडी 5-आधारित पासवर्ड एल्गोरिदम (apr1) का अपाचे संस्करण अब समर्थित है – kkurian

+0

यहां तक ​​कि दस्तावेज़ बिंदु भी बताते हैं कि" अपाचे संस्करण अब समर्थित है ", मैंने केवल इस समस्या को हल करके हल किया प्लेन एल्गोरिदम। दुर्भाग्यवश, nginx में डीबग लॉग के साथ, संदेश अभी भी "खुला()" है। Htpasswd "असफल रहा (13: अनुमति अस्वीकृत)", जो शायद समस्या का आंतरिक मूल कारण है (nginx के डेवलपर परिप्रेक्ष्य के अंतर्गत देख रहा है), लेकिन बेकार है जब आप समस्या निवारण करने का प्रयास कर रहे हैं। –

4

पुराना धागा, लेकिन कोई जवाब नहीं, और Google पर अच्छी तरह से संदर्भित किया गया है।

आप इस त्रुटि मिलती है और अन्य सुझावों की कोशिश की है, अपने .htpasswd फ़ाइल के मूल फ़ोल्डर की अनुमतियों की जाँच करें: nginx उपयोगकर्ता (www-डेटा डिफ़ॉल्ट रूप से) पढ़ा जाना चाहिए था और अनुमतियाँ निष्पादित (यह मेरे लिए तय है)।

1

एक और गोचा मैं बैश पर भाग गया। प्रॉम्प्ट के माध्यम से अपना पासवर्ड दर्ज करने के बजाय मैंने -bhtpasswd का विकल्प ऑनलाइन पासवर्ड दर्ज करने के लिए उपयोग किया।

$ htpasswd -nb admin test123$secure 

मैं नहीं समझ सकता है क्यों मेरे मैं, पासवर्ड बेमेल त्रुटियों में चल रहे विभिन्न एन्क्रिप्शन एल्गोरिदम की कोशिश कर रहा पर रखा। मैं कर्ल के साथ सत्यापित है कि यह काम किया:

$ curl -u admin:test123$secure https://example.com 

अंत में, समस्या echo

$ echo test123$secure 
test123 

मैं एक dolar चिह्न ($) बैश में जो के रूप में व्याख्या की गई थी का उपयोग कर की गलती की के माध्यम से ही reveiled एक खाली चर, इस प्रकार सबकुछ छोड़कर। -b विकल्प छोड़कर और केवल पासवर्ड दर्ज करने के लिए प्रॉम्प्ट का उपयोग करके इसे टाला जा सकता है।

+0

डाउनवॉटर टिप्पणी करने की देखभाल करते हैं? क्या यह एक उत्तर से अधिक टिप्पणी है? –

+0

उपरोक्त, बस डाउनवोट की वजह से .. – kev