वर्तमान में मेरे पास http://www.example.org और https://www.example.org दोनों हैं ।
मैं इसे स्थापित करना चाहूंगा ताकि http://www.example.org की ओर इशारा करते हुए कोई भी अनुरोध https://www.example.org पर पुनर्निर्देशित हो ।
ELB http अनुरोधों के रूप में https अनुरोध भेजता है, इसलिए इसका उपयोग करते हुए:
server {
listen 80;
server_name www.example.org;
rewrite ^ https://$server_name$request_uri? permanent;
}
काम नहीं करेगा क्योंकि https://www.example.org पर किए गए अनुरोध अभी भी nginx पर 80 पोर्ट के लिए किए जाएंगे।
मुझे पता है कि इसे फिर से लिखना संभव है
server {
listen 80;
server_name www.example.org;
if ($http_x_forwarded_proto != "https") {
rewrite ^(.*)$ https://$server_name$1 permanent;
}
}
लेकिन मैंने जो कुछ पढ़ा है, उसने कहा है कि if
नगीन विन्यास के भीतर हर कीमत पर इससे बचा जाना चाहिए, और यह हर एक अनुरोध के लिए होगा। इसके अलावा, इसका मतलब है कि मुझे स्वास्थ्य जांच के लिए एक विशेष अलग कॉन्फ़िगरेशन सेट करना होगा ( जैसा कि यहां बताया गया है : "... जब आप एक ईएलबी के पीछे होते हैं, जहां ईएलबी HTTPS समापन बिंदु के रूप में कार्य कर रहा है और केवल आपके सर्वर पर HTTP ट्रैफ़िक भेज रहा है, तो आप स्वास्थ्य जांच के लिए HTTP 200 ओके प्रतिक्रिया के साथ प्रतिक्रिया करने की क्षमता को तोड़ दें जो कि ELB की आवश्यकता है))।
मैं nginx कॉन्फ़िगरेशन के बजाय वेब एप्लिकेशन के कोड में लॉगिन लगाने पर विचार कर रहा हूं (और इस प्रश्न के उद्देश्यों के लिए मान लें कि यह एक Django- आधारित एप्लिकेशन है), लेकिन मुझे यकीन नहीं है कि इससे अधिक ओवरहेड होगा if
में विन्यास।