मुझे एक ही समस्या का अनुभव हुआ है, लेकिन थोड़ा अलग संदर्भ में। मैं एडब्ल्यूएस लोचदार बीनस्टॉक का उपयोग करके नोड.जेएस/एक्सप्रेस एप्लिकेशन को तैनात कर रहा था और उस पर एक एसएसएल प्रमाणपत्र स्थापित करने में सक्षम था।
इसका नतीजा यह था कि मेरा एप्लिकेशन http और https प्रोटोकॉल दोनों पर पहुंच योग्य था। लोड संतुलन के अनुमार्गण तालिका इस तरह देख रहे थे:
(Load balancer) http 80 --> (Node instance) http 8080
(Load balancer) https 443 --> (Node instance) http 8080
तो सवाल यह मेरी Node.js एप्लिकेशन पर केवल https कनेक्शन अधिकृत करने के लिए गया था, लेकिन https करने के लिए पुनर्निर्देशन को सक्षम करने अगर कनेक्शन initialy किया गया था http का उपयोग कर।
क्योंकि एडब्ल्यूएस लोड संतुलन के पीछे, सभी संचार HTTP पर किया जाता है, एक वैश्विक पुनर्निर्देशन अनुदेश इस एक एक अनंत पुनर्निर्देशन लूप तैयार हो जाएगा की तरह (इस मामले में एक मध्यस्थ के रूप):
app.use(function(req, res, next) {
if((!req.secure) && (req.protocol !== 'https')) {
res.redirect('https://' + req.get('Host') + req.url);
}
}
- > बस निर्देश के कारण (req.protocol !== 'https'
) हमेशा सत्य होगा!
इस ब्लॉग पोस्ट (http://matthew.mceachen.us/blog/howto-force-https-with-amazon-elastic-load-balancer-and-apache-1071.html) से, यह पता चला है कि एडब्ल्यूएस ईएलबी एक X-Forwarded-आद्य हैडर कि आप को पता है लोड संतुलन से पहले इस्तेमाल किया प्रोटोकॉल (http या https) था क्या कैप्चर कर सकते हैं कहते हैं।
app.use(function(req, res, next) {
if((!req.secure) && (req.get('X-Forwarded-Proto') !== 'https')) {
res.redirect('https://' + req.get('Host') + req.url);
}
else
next();
});
आशा इस मदद:
तो यह छोटा सा संशोधन चाल किया!
स्रोत
2013-07-12 22:21:09
क्या आप ग्राहक के लिए http: // 'लिंक लौट रहे हैं? – arx
मुझे एक नहीं मिल रहा है। ग्राहक में सभी पथ रिश्तेदार हैं (AJAX कॉल के लिए)। – Greg
अधिकांश ब्राउज़रों के पास आपके कोड से किए गए सभी कॉल, रीडायरेक्शन की निगरानी आदि का पता लगाने का कुछ साधन होता है। मैं एक ट्रेस चलाता हूं और देखता हूं कि http लिंक कहां से आ रहे हैं (उदाहरण के लिए या तो आपके कोड या दूरदराज के अंतराल से) । – arx