अब मुझे क्या करने की आवश्यकता है, इस फ़ोल्डर /blog
को इस उदाहरण पर इंगित करना है। मुझे लगता है कि हमें अमेज़न रूट 53 का उपयोग करना होगा? मैंने भी ऐसा करने की कोशिश की, लेकिन जाहिर है कि मैं blog.myapp.com
एक फ़ोल्डर में CNAME बना सकता था
और नहीं /blog
। और हम वास्तव में इसे चाहते हैं www.myapp.com/blog
। क्या मुझे कुछ उपयोग करना चाहिए .htaccess
?
संक्षिप्त जवाब।
संक्षेप में, आप जो वर्णन कर रहे हैं — जैसा कि आप उसका वर्णन कर रहे हैं — काम नहीं कर सकता। जबकि blog/
एक निर्देशिका / फ़ोल्डर / मुख्य पर पथ है www.myapp.com
अमेज़न EC2 उदाहरण के लिए, आप सर्वर और वेब URL पथ की अवधारणा को मिश्रण कर रहे हैं; उर्फ: निर्देशिका, फ़ोल्डर और पथ।
यदि आप एक नए अमेज़ॅन EC2 उदाहरण को स्पिन कर रहे हैं, तो आप एक नया सर्वर सेट कर रहे हैं। और एक ही आधार होस्टनाम के साथ दो सर्वर, www.myapp.com
लेकिन केवल एक के पास वैध रास्ता /blog
हो सकता है।
यदि आप इस साइट को सर्वरों में विभाजित करना चाहते हैं तो आपकी सबसे अच्छी शर्त नए अमेज़ॅन EC2 इंस्टेंस को सबडोमेन के साथ सेटअप करना है blog.myapp.com
और पहले ट्रैफ़िक www.myapp.com/blog
को उस नए सबडोमेन / होस्ट पर सभी ट्रैफ़िक को रीडायरेक्ट करना है।
अधिक विवरण नीचे।
लंबा जवाब।
तो आपके पास दो अमेज़ॅन EC2 उदाहरण हैं:
- EC2 इंस्टेंस 1: होस्टिंग है
www.myapp.com
।
- EC2 Instance 2: आप होस्ट करना चाहते हैं
www.myapp.com/blog
।
सबसे पहले, इसका अमेज़ॅन रूट 53 के साथ 100% कुछ भी नहीं है जो अमेज़ॅन की डीएनएस सेवा है। सभी अमेज़ॅन रूट 53 होस्टनाम और गंतव्य आईपी पते जैसी चीजों के लिए DNS प्रविष्टियों का प्रबंधन करते हैं। यह समझने का एक आसान तरीका /
URL में पहले पथ ( ) के बाईं ओर कुछ भी है, एक होस्टनाम है। तो आपके उदाहरण में:
www.myapp.com/blog
प्रश्न में होस्टनाम है www.myapp.com
।
तो CNAME के माध्यम www.myapp.com/blog
से EC2 इंस्टेंस 1 से EC2 इंस्टेंस 2 तक "पुनर्निर्देशित" करने का प्रयास कभी नहीं होगा। यह तकनीकी रूप से संभव नहीं है और यहां बताया गया है:
- पहले,
/
URL में दाईं ओर पथ डेटा के लिए DNS प्रविष्टि सेट नहीं की जा सकती थी ।
- दूसरे, आप मूल रूप से यह कहते हुए किया जाएगा यदि आप चाहते EC2 उदाहरण 1 और EC2 उदाहरण 2 के एक ही सटीक होस्ट नाम के लिए
www.myapp.com
है, जबकि केवल EC2 उदाहरण 2 होता है blog/
जो तकनीकी रूप से जिस तरह से अपने प्रश्न का तात्पर्य में संभव नहीं है।
एक अधिक यथार्थवादी समाधान अमेज़ॅन रूट 53 के माध्यम से एक नया उपडोमेन सेटअप करना होगा ताकि नया अमेज़ॅन ईसी 2 इंस्टेंस सेटअप इस तरह हो:
- EC2 इंस्टेंस 1: होस्टिंग है
www.myapp.com
।
- EC2 Instance 2: होस्ट करेगा
blog.myapp.com
।
इस तरह के मामले में आप तब अपाचे को फिर से लिखना नियम बना सकते हैं www.myapp.com/blog
ताकि जाने के लिए किए गए सभी ट्रैफ़िक अनुरोधों को लागू किया जा सके blog.myapp.com
। .htaccess
इस तरह एक कमांड के साथ बहुत व्यवहार्य और आसान :
RewriteEngine On
RewriteRule ^blog(/.*)?$ http://www.newdomain.com/ [R=301]
आप बस में जगह होता है कि .htaccess
की जड़ पर स्थित फ़ाइल www.myapp.com
और उस से सभी यातायात रीडायरेक्ट करेगा EC2 उदाहरण 1 के लिए जा रहा blog/
करने के लिए blog.myapp.com
।
एक और बात: अपाचे रिवर्स प्रॉक्सी का उपयोग करने के पेशेवरों / विपक्ष।
तो ऊपर के सभी कहा एक टिप्पणीकार को लाने करता है करने के लिए जा अनुरोधों में स्थापित करने और पाइप के लिए अपाचे रिवर्स प्रॉक्सी के संभावित उपयोग www.myapp.com/blog
पर EC2 उदाहरण 1 करने के लिए blog.myapp.com
पर EC2 उदाहरण 2 । हां, यह तकनीकी रूप से उन लक्ष्यों को प्राप्त कर लेगा जो मूल प्रश्न को रेखांकित करते हैं, लेकिन यह कृमियों की क्षमता को खोल देता है:
- अपाचे रिवर्स प्रॉक्सी की स्थापना की जटिलता: अब मैं यह नहीं कह रहा हूं कि रिवर्स प्रॉक्सी की अवधारणा इतनी जटिल है कि एक औसत उपयोगकर्ता सीख नहीं सकता कि इसका उपयोग कैसे किया जाए। वास्तव में यह समझने में आसान है कि एक बार आप इसे लटका दें। लेकिन अपाचे कॉन्फ़िगरेशन को समायोजित करने और सेटअप के जीवनकाल में उन कॉन्फ़िगरेशन को प्रबंधित करने से जटिलता आती है। उदाहरण के लिए कुछ वेब विकास की दुकानों में, यह एक DevOps कार्य माना जाएगा। और कुछ डेवलपर्स इस तरह से एक गैर-सामान्य DevOps कार्य से निपटना नहीं चाहते हैं।
- रिवर्स प्रॉक्सी का अर्थ है कि दोनों सर्वर ट्रैफ़िक प्राप्त करते हैं: चूंकि एक रिवर्स प्रॉक्सी मूल रूप से एक "पाइप" है जो एक सर्वर से दूसरे में ट्रैफ़िक को रूट करता है, EC2 इंस्टेंस 2 के लिए किस्मत में ट्रैफ़िक को अभी भी EC2 इंस्टेंस 1 से गुजरना होगा । यदि अलग-अलग अमेज़ॅन ईसी 2 इंस्टेंसेस स्थापित करने का लक्ष्य यह सुनिश्चित करना है कि एक सर्वर दूसरे को प्रभावित नहीं करता है, तो रिवर्स प्रॉक्सी समस्याग्रस्त हो सकता है। मान लीजिए कि ट्रैफ़िक के टन-वास्तविक उपयोगकर्ताओं या हमले से -
www.myapp.com/blog
क्या होता है? EC2 इंस्टेंस 1 पर मुख्य सर्वर उस ट्रैफ़िक के साथ-साथ EC2 इंस्टेंस 2 प्राप्त करता है ; इसलिए दोनों सर्वर संभावित रूप से कमजोर हैं। इसके विपरीत एक साधारणRewriteRule
एक उपडोमेन पर ट्रैफ़िक उछालने के लिए हल्का / नगण्य लोड-वार है और चूंकि अधिकांश उपयोगकर्ता blog.myapp.com
वैसे भी उपडोमेन पर ब्लॉग को हिट करेंगे , दोनों सर्वर अलग-अलग हो जाते हैं / प्रत्येक ट्रैफ़िक से अलग हो जाता है।
- दोनों सर्वर मुख्य सर्वर के दुर्गम में नीचे जाते हैं: समझने में बहुत सरल। यदि EC2 इंस्टेंस 1 ट्रैफ़िक के
www.myapp.com/blog
साथ-साथ कोर सामग्री के लिए भी प्रबंध कर रहा है www.myapp.com
, यदि वह सर्वर डाउन हो जाता है, तो दोनों साइट अप्राप्य हैं। एक उपडोमेन होने का blog.myapp.com
मतलब है कि भले ही मुख्य सर्वर www.myapp.com
नीचे चला जाए, फिर blog.myapp.com
भी सुलभ है।
यदि आप अपाचे रिवर्स प्रॉक्सी सेटअप का उपयोग करना चाहते हैं, तो मैंने कहा कि मेरे पास सर्वर फाल्ट पर दो उत्तर हैं- यह एक और यह मूल कॉन्फ़िगरेशन और सेटअप की व्याख्या करता है।
ध्यान दें कि वे पोस्ट सोलर और अन्य जावा / टॉम्कट एप्लिकेशन पर ध्यान केंद्रित करते हैं जो पोर्ट का उपयोग करते हैं 8080
और मैं अपने जीवन को आसान बनाने के लिए अपाचे रिवर्स प्रॉक्सी का उपयोग कैसे करता हूं क्योंकि टॉमकैट मेरी विनम्र राय को कॉन्फ़िगर / प्रबंधित करने के बट में दर्द है। अपाचे रिवर्स प्रॉक्सिंग ने मुझे टॉमकैट के क्विरक्स से निपटने के बजाय किसी साइट के फ्रंट-फेसिंग वेब एक्सेस को प्रबंधित करने के लिए अपाचे कॉन्फ़िगरेशन को समझने के लिए अपेक्षाकृत आसान उपयोग करने की अनुमति दी। लेकिन समग्र अवधारणाओं को अपाचे-से-अपाचे रिवर्स प्रॉक्सी प्रॉक्सी में उपयोग से आसानी से अनुकूलित किया जा सकता है।