2013-02-12 56 views
5

मैं कई आईआईएस वेब सर्वरों के सामने एक रिवर्स आरपीक्सी सर्वर के रूप में nginx को स्थापित करने की कोशिश कर रहा हूं जो मूल प्रमाणीकरण का उपयोग कर प्रमाणीकरण कर रहे हैं।Nginx रिवर्स प्रॉक्सी - पासथ्रू मूल स्वाभाविकता

(नोट - इस nginx providing the auth using a password file के रूप में ही नहीं है - यह सिर्फ ब्राउज़र/सर्वर के बीच everythnig marshelling किया जाना चाहिए) - लेकिन बार-बार हर एक संसाधन द्वारा प्रमाणन के लिए संकेत दिया जा रहा है (छवि/सीएसएस

इसकी तरह बंद काम कर आदि) एक पृष्ठ पर।

upstream my_iis_server { 
     server 192.168.1.10; 
} 

server { 
    listen  1.1.1.1:80; 
    server_name www.example.com; 

    ## send request back to my iis server ## 
    location/{ 
    proxy_pass http://my_iis_server; 
    proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504; 
    proxy_http_version  1.1; 
    proxy_set_header  Connection ""; 
    proxy_pass_header  Authorization;  
    proxy_redirect off; 
    proxy_buffering off; 
    proxy_set_header  Host   $host; 
    proxy_set_header  X-Real-IP  $remote_addr; 
    proxy_set_header  X-Forwarded-For $proxy_add_x_forwarded_for; 
    } 
} 

उत्तर

5

इस सटीक स्थिति ने मुझे हमेशा पता लगाने के लिए लिया, लेकिन ओएसएस ऐसा लगता है। यह पोस्ट एक साल पुराना है, इसलिए मूल पोस्टर ने इसे समझ लिया, या छोड़ दिया?

वैसे भी, मेरे लिए समस्या कम से कम कुछ चीजें की वजह से किया गया था:

  1. आईआईएस उम्मीद दायरे स्ट्रिंग क्या यह Nginx के लिए भेजा के रूप में ही है, लेकिन अपने Nginx server_name एक पर ध्यान दे रही है, तो अपस्ट्रीम की तुलना में अलग पता तो सर्वर की तरफ WWW-प्रमाणीकरण ऐसा नहीं होगा जो आईआईएस की अपेक्षा कर रहा था और इसे अनदेखा कर रहा था।
  2. बिल्टिन हेडर मॉड्यूल अन्य डब्ल्यूडब्ल्यूडब्ल्यू-प्रमाणीकरण शीर्षकों को स्पष्ट नहीं करता है, विशेष रूप से समस्याग्रस्त डब्ल्यूडब्ल्यूडब्ल्यू-प्रमाणीकरण: वार्तालाप। हेडर का उपयोग करना-अधिक मॉड्यूल पुराने हेडर को साफ़ करता है, और जो भी आप इसे बताते हैं उसे जोड़ता है।

इसके बाद, मैं आखिरकार शेयरपॉइंट 2010 को निगेंक्स के माध्यम से धक्का दे सकता था।

धन्यवाद स्टैक ओवरफ्लो।

server { 
    listen 80; 
    server_name your.site.com; 

    location/{ 
      proxy_http_version  1.1; 
      proxy_pass_request_headers on; 
      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_header  Authorization; //This didnt work for me 
      more_set_input_headers 'Authorization: $http_authorization'; 

      proxy_set_header Accept-Encoding ""; 

      proxy_pass    https://sharepoint/; 
      proxy_redirect   default; 
      #This is what worked for me, but you need the headers-more mod 
      more_set_headers  -s 401 'WWW-Authenticate: Basic realm="intranet.example.com"'; 
    } 
} 
+0

मूल पोस्टर वास्तव में छोड़ देना था और इसके बजाय माइक्रोसॉफ्ट आईआईएस आवेदन करने की कोशिश की अनुरोध रूटिंग (एआरआर) जिसने बिना किसी समस्या के बेसिक और एनटीएमएल ऑथ को संभाला था, लेकिन कुछ शेयरपॉइंट 2013 की न्यूनतम डाउनलोड रणनीति (एमडीएस) के साथ कुछ बहुत ही अजीब समस्याएं आईं जो मुझे नीचे नहीं मिलीं। – Ryan

+0

शायद यह सहायक हो सकता है: http://serverfault.com/questions/230749/how-to-use-nginx-to-proxy-to-a-host-requiring- प्रमाणीकरण – czerasz

+0

@matt हाय मुझे sth को पास करने की आवश्यकता है उपयोगकर्ता नाम: realm = "आदि" के बजाय पासवर्ड यह अभी भी काम करेगा? – Jonathan

0

मेरे पास इन लक्षणों को nginx/1.10.3 के साथ था। मेरे पास मूल प्रमाणीकरण के तहत सुरक्षित सेवा है, और nginx क्लाइंट और सर्वर के बीच एक रिवर्स प्रॉक्सी के रूप में है। आवश्यकता थी कि nginx प्रमाणीकरण के माध्यम से होगा।

सर्वर के लिए पहला अनुरोध प्राधिकरण शीर्षलेख से गुज़र गया था। दूसरे अनुरोध ने इस हेडर को आसानी से अवरुद्ध कर दिया, जिसका मतलब था कि क्लाइंट प्रति सत्र एक अनुरोध करने में सक्षम था।

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

proxy_pass http://$upstream; 

के बजाय:

मेरे लिए समाधान का उपयोग कर, https से अपस्ट्रीम सर्वर को बदलने के लिए http के लिए गया था

proxy_pass https://$upstream;