2012-04-16 23 views
10

मेरे पास nginx उसी मशीन पर चल रहे किसी HTTP सर्वर पर https ट्रैफ़िक प्रॉक्सी करने के लिए कॉन्फ़िगर किया गया है।Nginx प्रॉक्सी https से http?

जब मैं https पोर्ट 443 से/proxy सुनने के लिए nginx को कॉन्फ़िगर करता हूं तो सबकुछ ठीक काम करता है। लेकिन मैं वास्तव में एक गैर मानक पोर्ट को सुनना चाहता हूं। जब मैं एक गैर मानक पोर्ट को कॉन्फ़िगर करता हूं, तो nginx अनुरोध प्राप्त करता है और इसे मेरे http सर्वर पर भेजता है, जैसा कि इसे करना चाहिए, लेकिन सर्वर एक HTTP रीडायरेक्ट के साथ प्रतिक्रिया कर रहा है जो ब्राउज़र पर वापस भेजता है जो इसे 'https: // सर्वर पर रीडायरेक्ट करने के लिए कहता है। com/someurl "। मेरा मतलब है कि रीडायरेक्ट यूआरएल अच्छा दिखता है, इसके अलावा यह सही पोर्ट खो रहा है। क्या मुझे एक HTTP शीर्षलेख याद आ रहा है जिसे मुझे प्रॉक्सी में सेट करने की आवश्यकता है?

विशेष रूप से मैं ट्रैक का एक http उदाहरण चला रहा हूं ।; http://getontracks.org यह मायने रखता है तो

मेरे (मानक पोर्ट पर काम कर) nginx सर्वर विन्यास:

location /{ 
    proxy_pass http://localhost:50000; 
    proxy_next_upstream error timeout invalid_header http_500 http_502 http_503; 
    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_set_header X-Forwarded-Proto https; 
    proxy_redirect off; 
} 

उत्तर

1

गु। वेब सर्वर कॉन्फ़िगरेशन के नहीं, अपस्ट्रीम होस्ट (ट्रैक) पर चल रहे एप्लिकेशन का एक मुद्दा है (जब तक कि आपके अपस्ट्रीम वेब सर्वर कॉन्फ़िगरेशन में नियमों को फिर से लिखना न हो)। विभिन्न अनुप्रयोग इन परिस्थितियों को अलग-अलग संभालते हैं: कुछ को एक स्पष्ट कॉन्फ़िगरेशन पैरामीटर की आवश्यकता होती है जो उन्हें वास्तविक यूआरएल पर पहुंचा जा सकता है, कुछ कुछ HTTP शीर्षलेखों का उपयोग करते हैं, कुछ अन्य HTTP शीर्षलेखों का उपयोग करते हैं।

ट्रैक्स एक रेल एप्लिकेशन है, इसलिए यदि आप अपने प्रश्न में संबंधित टैग जोड़ते हैं तो आप अधिक जानकार उत्तर प्राप्त कर सकते हैं।

+0

धन्यवाद। मुझे कुछ फोरम पोस्ट मिले जो एक HTTP एक्स-फॉरवर्डेड-पोर्ट हेडर सेट करने का सुझाव देते हैं, भले ही यह एक गैर मानक 'गैर मानक' शीर्षलेख की तरह दिखता हो। मैंने nginx कॉन्फ़िगरेशन में कोई किस्मत के साथ सेटिंग करने की कोशिश की। मुझे लगता है कि वैसे भी, जैसा कि आप कहते हैं, अपस्ट्रीम होस्ट पर चल रहे एप्लिकेशन को इस बारे में कुछ पता होना चाहिए और उस पर कार्रवाई करना होगा। – kenen

24

मुद्दा लाइन की वजह से उपजी -

proxy_set_header Host $host; 

जब रीडायरेक्ट प्रतिक्रिया जारी करने के अपने वेब सर्वर (WEBrick) बदले में यह भी शामिल है।

आप अमानक पोर्ट शामिल करने के लिए इसे बदल सकते हैं -

proxy_set_header Host $host:$server_port; 

जो इसका समाधान हो जाएगा।

+0

बहुत अच्छा है। इसने उचित यूआरएल सहित उत्पन्न करने की कोशिश कर रहे nginx रिवर्स प्रॉक्सी के पीछे चल रहे फ्लास्क एप्लिकेशन के साथ मेरी समस्या का समाधान किया। उस स्निपेट को छूने की आवश्यकता के बिना [फ्लास्क स्निपेट 35] (http://flask.pocoo.org/snippets/35/) में वर्णित गैर-स्टारडार्ड पोर्ट। –

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