9

मैं एक ईएलबी (अमेज़न लचीला लोड बैलेंसर) HTTPS पर संतुलन अंत उपयोगकर्ताओं अनुरोध लोड करने के लिए कॉन्फ़िगर, बैकएंड पर मैं अपने आवेदन बिलाव सर्वर पर चल रहा है जो कॉन्फ़िगर किया गया है है HTTP परअंक

तो जब मेरे अंतिम उपयोगकर्ता आवेदन के लिए अनुरोध करते हैं तो अनुरोध एचटीटीपीएस पर होगा, क्योंकि वे ईएलबी तक पहुंचते हैं, अब, ईएलबी आंतरिक रूप से इसे टोमकैट सर्वर पर HTTP पर रीडायरेक्ट करता है। बिल्ला में अपने आवेदन वसंत सुरक्षा के माध्यम से सुरक्षित है और उपयोगकर्ता उपयोगकर्ता में लॉग इन नहीं कर रहा है यदि अनुरोध एक संरक्षित संसाधन के लिए है और कॉन्फ़िगर लॉगिन पृष्ठ पर पुनः निर्देशित किया गया है। अब, अंतिम उपयोगकर्ता के लिए यह पुनर्निर्देशन HTTP से अधिक हो जाएगा, क्योंकि टॉमकैट सर्वर को मूल रूप से ईएलबी से HTTP के रूप में अनुरोध प्राप्त हुआ था। यह अब 404 तक पहुंच जाएगा क्योंकि मैंने HTTP पर आंतरिक ट्रैफिक के लिए कॉन्फ़िगर नहीं किया है।

हम इस मुद्दे कैसे ठीक करूं? एंडुसर-ईएलबी और ईएलबी-टोमकैट पर एचटीटीपीएस दोनों का एकमात्र विकल्प है या क्या मुझे यहां कुछ चीज़ याद आ रही है?

उत्तर

9

ईएलबी एक X-Forwarded-Proto हैडर कि आपको बताने के लिए जो प्रोटोकॉल अपने लोड संतुलन से कनेक्ट करने के लिए प्रयोग किया जाता ग्राहक की अनुमति देता है निर्धारित करता है। documentation देखें।

आप इस शीर्ष लेख को देखने के लिए, उदाहरण के लिए this answer देख वसंत सुरक्षा कॉन्फ़िगर कर सकते हैं।

+1

आपको बहुत धन्यवाद .. यह मेरी समस्या हल हो गया .. –

0

मैं एक कठिन समय नेट पर इस खोजने में कठिनाई हुई और अंत में मैं यह करने के लिए एक रास्ता मिल गया।

समस्या यह थी कि जैसे ही http ईएलबी पर आंतरिक रूप से https पोर्ट पर रीडायरेक्ट किया गया था, यह पोर्ट 80 पर वापस रीडायरेक्ट किया जाता था, इस प्रकार एक लूप बनाते थे। ऐसा इसलिए होता है क्योंकि ईएलबी एसएसएल को ऑफ़लोड करता है और फिर पोर्ट 80 को फिर से जोड़ता है।

अंत में कुछ शोध के बाद मुझे एक्स-फॉरवर्डेड-प्रोटो को इस तरह से प्रबंधित करने के लिए सही पुनर्लेखन नियम मिला कि अगर ईएलबी एसएसएल टॉमकैट को ऑफ़लोड करता है तो भी मूल अनुरोध SSL का उपयोग कर रहा था।

यह टॉमकैट 8 पर टॉमकैट वाल्व का उपयोग करके किया जाता है। मुझे यकीन है कि यह पिछले संस्करणों पर भी किया जा सकता है। मैंने वाल्व का उपयोग कर टोमकैट पर नियमों को फिर से लिखने में सक्षम किया है। उसके बाद अपाचे पर रीडायरेक्ट नियम लिखना उतना आसान था।

चरण 1::

एक

ये कदम उठाएँ। टॉमकैट conf फ़ोल्डर बी के तहत खुला context.xml खोलें।

<Valve className="org.apache.catalina.valves.rewrite.RewriteValve" /> 

नोट: यह वैश्विक स्तर पर वाल्व को सक्षम करेगा, नीचे दी गई पंक्ति को पेस्ट करें। मामले में यह फिर विशिष्ट मेजबान के लिए सक्षम होने के लिए यह कदम 2 उस विशेष डोमेन के लिए

server.xml के अंदर चिपकाया जाना चाहिए की जरूरत है:

एक। खुला conf/server.xml बी।

एक: बस ऊपर </Host>

<Valve className="org.apache.catalina.valves.rewrite.RewriteValve" /> 

चरण 3 निम्न पंक्ति पेस्ट करें। उस फ़ोल्डर को खोलें जहां web.xml है। उदाहरण के लिए यदि आवेदन रूट के तहत होस्ट किया गया है तो वेब।एक्सएमएल वेबपैस/रूट/वेब-आईएनएफ

बी के तहत होगा। इसी प्रकार यदि एप्लिकेशन वेबएप/माईएप्पफोल्डर के तहत होस्ट किया गया है तो वेब.एक्सएमएल वेबएप/माईएप्पोल्डर/वेब-आईएनएफ

सी के तहत होगा। वेब-आईएनएफ फ़ोल्डर में एक नई फ़ाइल rewrite.config बनाएं। और निम्न पुनर्लेखन नियम पेस्ट करें:

RewriteCond %{HTTP:X-Forwarded-Proto} !https 
RewriteCond %{HTTPS} off 
RewriteRule^https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301,NE]