सवाल प्रमाणीकरण की आवश्यकता वाले होस्ट को प्रॉक्सी में nginx का उपयोग कैसे करें?


मैं एक nginx proxy_pass निर्देश कैसे स्थापित कर सकता हूं जिसमें प्रॉक्सी होस्ट को भेजी गई HTTP मूल प्रमाणीकरण जानकारी भी शामिल होगी?

यह उस URL का एक उदाहरण है जिसे मुझे प्रॉक्सी करने की आवश्यकता है:

http://username:password@192.168.0.5/export?uuid=1234567890

अंतिम लक्ष्य प्रॉक्सी सर्वर के यूआरआई को उजागर किए बिना 1 सर्वर को किसी अन्य सर्वर से मौजूद फाइलों को अनुमति देना है (जिसे हम प्रॉक्सी कर रहे हैं)। मेरे पास यह यहां पाया गया Nginx कॉन्फ़िगरेशन का पालन करने से अब 90% सही काम कर रहा है:

http://kovyrin.net/2010/07/24/nginx-fu-x-accel-redirect-remote/

प्रॉक्सी सर्वर को भेजने के लिए मुझे बस HTTP बेसिक प्रमाणीकरण में जोड़ना होगा


40
2018-02-03 17:53


मूल


@all: सुनिश्चित करें कि इस समाधान का उपयोग करते समय आपको HTTP मूल प्रमाणीकरण की आवश्यकता है - HTTP डायजेस्ट प्रमाणीकरण नहीं;) जब तक मैंने इसे समझ नहीं लिया तब तक काफी कठिन समय था ... stackoverflow.com/questions/9534602/... - SimonSimCity


जवाब:


मैंने थोड़ी देर पहले इस पर एक लेख लिखा था। विवरण यहां देखें:

http://shairosenfeld.blogspot.com/2011/03/authorization-header-in-nginx-for.html

उदाहरण के लिए:

 location / {
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_pass http://6.6.6.6:80;
    proxy_set_header Authorization "Basic a2luZzppc25ha2Vk";
 }

"a2luZzppc25ha2Vk" "राजा: isnaked" बेस 64 एन्कोडेड है, तो यह काम करेगा

http: // राजा: isnaked@6.6.6.6

अधिक जानकारी के लिए ब्लॉग पोस्ट देखने के लिए स्वतंत्र महसूस करें।


50
2017-12-30 07:31



लिंक टूटा हुआ है - Alex
लिंक अब यहां है: shairosenfeld.blogspot.com/search?q=nginx अगर कोई सोच रहा है - ckm
मुझे कुछ और मुश्किल चाहिए - Ilja
आपका समाधान पर्याप्त लचीला नहीं है। उपयोगकर्ता नाम एन्कोड करने के लिए यह बहुत उपयोगी हो सकता है: फ्लाई पर पासवर्ड। सबसे पहले, nginx को उपयोगकर्ता नाम पार्स करना चाहिए: URL से पासवर्ड, दूसरी बात, nginx को इस डेटा को एन्कोड करना होगा और उचित शीर्षलेख में सेट करना होगा। मैं एन्कोडेड क्रेडेंशियल हार्डकोड नहीं करना चाहता हूं। - Johnny
मुझे अपने सेटअप पर कोशिश करते समय "बुरा अनुरोध" मिलता है .. कोई विचार? - Spock


मुझे यह अल्वोसु के जवाब के साथ काम मिला लेकिन मुझे बेस 64 स्ट्रिंग के उद्धरण के अंदर "बेसिक" शब्द दर्ज करना पड़ा, इसलिए ऐसा लगता है:

proxy_set_header Authorization "Basic dGVzdHN0cmluZw==";

18
2018-02-03 21:53



क्या आप जानते हैं कि उपयोगकर्ता नाम एन्कोड कैसे करें: nginx के साथ फ्लाई पर पासवर्ड? हार्डकोडेड क्रेडेंशियल्स लचीला नहीं है, क्योंकि मैं यूआरएल में निर्दिष्ट प्रमाण पत्र के साथ उपयोगकर्ता को प्रमाणीकृत करना चाहता हूं। - Johnny
मैंने पाया है कि nginx के साथ base64 को एन्कोड कैसे करें wiki.nginx.org/HttpSetMiscModule#set_encode_base64। यह हार्डकोडेड प्रमाण-पत्रों से अधिक उपयोगी है। - Johnny
@ जॉनी लिंक उन दस्तावेज़ों के लिए यहां हैं: github.com/openresty/set-misc-nginx-module#set_encode_base64 - Al Dass


Proxy_set_header प्रमाणीकरण "USER_AND_PASS" सेट करें, जहां USER_AND_PASS = base64 (उपयोगकर्ता: पास)


4
2018-02-03 18:01



कीवर्ड गायब है Basic। - Jan-Philip Gehrcke