2009-06-10 6 views
9

मेरे पास एक वेबपैप है जहां उपयोगकर्ता अपना खाता बना सकते हैं और सेवा का उपयोग कर सकते हैं। अब मैं उन्हें एक कस्टम डोमेन सुविधा देना चाहता हूं जहां app.customer1web.com point_to myservice.com पर userid ग्राहक 1 के साथ कस्टम डोमेन सेट अप करने के बाद, दुनिया के लिए ऐसा लगता है कि मेरी सेवा उसकी मशीन पर चल रही है। ब्लॉगर, wp.com, tumblr जैसी कई सेवाएं इस सुविधा को देती हैं।सास सॉफ़्टवेयर को cname अग्रेषित समर्थन कैसे दें

मैं यह कैसे कर सकता हूं? मैं अपना वेब ऐप लिखने के लिए जावा का उपयोग कर रहा हूं। अनुरोध आने पर मैं डोमेन नाम को उपयोगकर्ता नाम कैसे मैप कर सकता हूं?

उत्तर

11

अनुरोध करते समय मैं डोमेन नाम को डोमेन आईडी कैसे मैप कर सकता हूं?

जाहिर है, आपको उस जानकारी को कहीं भी संग्रहीत करना होगा, डेटाबेस में सबसे अधिक संभावना है।

  1. कॉलम के साथ एक डेटाबेस तालिका domains जोड़ें:

    • CUSTOMERID
    • नाम
    • सक्रिय (1 या शून्य)
    • चुनौती

    के लिए अद्वितीय कुंजी जोड़ें (नाम, सक्रिय) यह सुनिश्चित करने के लिए कि डोमेन नाम मैप किया गया है एक बार ly

  2. जब कोई ग्राहक डोमेन जोड़ने का प्रयास करता है, सक्रिय = NULL के साथ एक पंक्ति जोड़ें और चुनौती को यादृच्छिक स्ट्रिंग पर सेट करें।

    ग्राहक को यादृच्छिक स्ट्रिंग दिखाएं और उन्हें साइट पर इसके साथ एक वेब पेज डालने के लिए कहें या डोमेन स्वामित्व सत्यापित करने के लिए इसके साथ एक डमी DNS रिकॉर्ड बनाएं (इस प्रकार Google Apps इसे करते हैं)।

    आप प्रशासनिक संपर्क या किसी अन्य तरीके से ईमेल भेजकर स्वामित्व सत्यापित कर सकते हैं।

  3. ग्राहक कहते हैं जब वह बताएं कि आप उनसे चरण # 2 में करते हैं, यह सत्यापित करने और सक्रिय = 1, चुनौती = शून्य सेट करने के निर्देश दिए था।

    तो डोमेन कुछ अन्य ग्राहक के लिए सक्रिय पहले से था, उन रिकॉर्ड को हटाने या सक्रिय = 0 निर्धारित किया है।

  4. अपने डोमेन के लिए CNAME रिकॉर्ड जोड़ने और इसे आगे के लिए अपने डोमेन, उदा करने के लिए ग्राहक से पूछो hosted.myservice.com (गूगल Google Apps के लिए ghs.google.com उपयोग करता है)।

  5. जब एक अनुरोध में आता है,

    SELECT customerId FROM domains WHERE name=:requestDomain AND active=1 
    

एक बेहतर तरीका ऐसा स्वचालित रूप से कस्टम डोमेन के लिए अपने ग्राहकों अलावा <customername>.myservice.com, के प्रारूप में एक डोमेन की पेशकश करने के हो सकता है।

  • जिन ग्राहकों ने अपने स्वयं के डोमेन का उपयोग करने wan't नहीं अभी भी अपने प्रवेश पृष्ठ अनुकूलित कर सकते हैं, उदाहरण के लिए: यह आपको दो लाभ प्रदान करता है एक कंपनी लोगो के साथ।

  • कस्टम डोमेन के लिए, आप अपने ग्राहक से उन्हें hosted.myservice.com के बजाय उन्हें <customername>.myservice.com पर अग्रेषित करने के लिए कह सकते हैं।

    यह आपको ग्राहकों द्वारा पूछे जाने उनके अंत पर कुछ भी बदलने के बिना एक से अधिक सर्वर के बीच विभाजन ग्राहकों क्षैतिज करने के लिए सक्षम बनाता है। उदाहरण के लिए, आप ग्राहकों को यह चुनने का विकल्प दे सकते हैं कि वे यूरोपीय संघ या यूएस में अपना खाता होस्ट करना चाहते हैं या नहीं। जब वे इसे बदलते हैं, तो बस अपना डेटा स्थानांतरित करें और <customername>.myservice.com अपडेट करें। उनका कस्टम डोमेन स्वचालित रूप से काम करेगा।

ऐसा करने के लिए, आप *.myservice.com के लिए वाइल्डकार्ड DNS रिकॉर्ड स्थापित करने के लिए (जब तक आप भी उत्तरार्द्ध सुविधा, जिस स्थिति में आप व्यक्तिगत रिकॉर्ड को प्रबंधित करना होगा की जरूरत है) होगा।

+0

मुझे लगता है कि यह एक महान जवाब है। मैंने कुछ सीखा, धन्यवाद, जाका! – Upgradingdave

+1

आपको डोमेन स्वामित्व सत्यापित क्यों करना है? अगर वे एक सीएनएन जोड़ सकते हैं, तो क्या यह सबूत पर्याप्त नहीं है? –

+0

@ क्रिश्चियन डेवन आपको सीएनएन सत्यापन की आवश्यकता है! चलिए एक उदाहरण के रूप में tumblr का उपयोग करें (जो मुझे विश्वास है कि यह समस्या है)। कंपनी एबीसी जल्द ही लॉन्च होने जा रही है। वे blog.ABC.com के साथ लॉन्च करेंगे। एविल कंपनी एक्सवाईजेड टंबलर पर जाती है और एबीसी से पहले अपने ब्लॉग को इंगित करने के लिए सीएनएन ब्लॉग.एबीसी.कॉम को पंजीकृत करती है। सत्यापन के बिना किस ब्लॉग को इंगित करना चाहिए? –

0

मुझे पूरा यकीन नहीं है कि मैं वास्तव में समझता हूं कि आप क्या करना चाहते हैं लेकिन मैं आपको एक संभावित समाधान (कम से कम अपनी समस्या के जावा भाग के लिए) देने का प्रयास करता हूं।

एक संभावना है कि आप अपने एप्लिकेशन सर्वर को इस तरह से स्थापित करें कि प्रत्येक अनुरोध एक एकल Servlet (web.xml) द्वारा संभाला जाता है। यह सर्वलेट अनुरोध url (HttpServletRequest.getRequestURI) के बारे में पता लगा सकता है और उपयोगकर्ता नाम निकाला जा सकता है। फिर आप उपयोगकर्ता के बारे में जानते हैं और जो भी आप करना चाहते हैं, इस जानकारी का उपयोग कर सकते हैं।

ध्यान रखें कि बहुत सी DNS-stuff शामिल हैं जो आप करना चाहते हैं! (कम से कम किराया जैसा कि मैं इसे समझता हूं।)

1

एक समाधान जिसका आप उपयोग कर सकते हैं, आपके आवेदन के लिए WildCard DNS Record स्थापित कर रहा है, और एप्लिकेशन को यह देखने के लिए अनुरोधकर्ता को जांचें कि उपयोगकर्ता किस मेजबान नाम पर आ रहे हैं।

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

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