2012-05-03 11 views
10

सास में एक उप डोमेन की ओर इशारा करते मैं एक उदाहरण सास अनुप्रयोग बनाना चाहते हैं, जिससे उन, साइन अप के लिए वेब पेज बनाने, उपयोग टेम्पलेट्स और/या उन्हें कस्टम सीएसएस के साथ कस्टमाइज़ अपने वेब पृष्ठों की सेवा में सक्षम हैं कस्टम डोमेन सेवा करने के लिए कस्टम डोमेन बंद।कैसे अनुप्रयोग

मैं S3/अन्य CDNs पर टेम्पलेट्स बचत, मीडिया/स्टाइलशीट/js फ़ाइलों के साथ विचार कर रहा था। जबकि सभी तकनीकी रूप से संभव हैं (व्यावहारिक? जो बहस योग्य हो सकता है)। वैसे भी, मुझे यह पता लगाना मुश्किल था कि इस मामले में कस्टम डोमेन से वेबसाइटों को कैसे पेश किया जाएगा? उदाहरण के लिए, जब वे साइन अप करते हैं, तो उन्हें subdomain.domain.com पता मिल सकता है। हालांकि, कि वे किस तरह customerdomain.com बात इतनी है कि जब customerdomain.com दर्ज किया गया है, यह customerdomain.domain.com के रूप में ही सामग्री प्रस्तुत करती है, और यूआरएल customerdomain.com

बनी हुई है साथ ही, अगर मैं एक एक भुगतान सुविधा "feature" जिससे, कस्टम डोमेन हो सकता है करना चाहते हैं। मैं इसे केवल भुगतान उपयोगकर्ताओं तक ही सीमित कैसे करूं?

आम तौर पर जब, हम सेटअप वेबसाइटों, हम इसे वर्चुअल होस्ट कॉन्फ़िग फ़ाइल (Apache) में निर्दिष्ट करें, और यह उपनाम देते हैं, तो इसके लिए लग रहा है और उन उपनाम कार्य करता है। इस मामले में, मैं साइन अप करने वाले प्रत्येक व्यक्ति के लिए एक अलग vhost फ़ाइल नहीं चाहता हूं। क्या कोई विकल्प है? मैं इसे कैसे प्रोग्राम कर सकता हूं? क्या इसके बारे में जागरूक होने के लिए कोई गठिया है?

एक समाधान जो मैंने देखा है वह है कि सर्वर एक वाइल्डकार्ड डोमेन i.e *.domain.com, और प्रत्येक कस्टम डोमेन के लिए एक अलग vhost सेवा करता है, हालांकि मैं इससे बचने के लिए पसंद करूंगा।

धन्यवाद।

उत्तर

6

कस्टम डोमेन आमतौर पर एक CNAME DNS रिकॉर्ड (DNS रिकॉर्ड के लिए एक सिमलिंक की तरह) के माध्यम से किया जाता है। आप अपने ग्राहक को बताते हैं (जो आमतौर पर customerdomain.com पर नियंत्रण में है) एक सीएनएन रिकॉर्ड बनाने के लिए कहता है कि customerdomain.com customerdomain.domain.com के लिए एक उपनाम है। फिर आपको customerdomain.com पर अनुरोधों की व्याख्या करने के लिए अपना स्वयं का सर्वर सेट अप करने की आवश्यकता है क्योंकि यह ग्राहकdomain.domain.com पर अनुरोधों का इलाज करेगा।

कैसे आप अपने उप डोमेन की सेवा के आधार पर यह कुछ अलग तरीकों से किया जा सकता है।

आप हर एक ग्राहक के लिए एक vhost फ़ाइल है, तो आप अपने ग्राहक प्रदान की गई है कस्टम डोमेन के लिए एक "सर्वर का" निर्देश जोड़ने की जरूरत है।

यदि आप अपने स्वयं के एप्लिकेशन सर्वर के माध्यम से प्रवेश बिंदु कोड कर रहे हैं (कहें, "मेजबान" HTTP हेडर को PHP से पढ़ना और फिर उस से ग्राहक नाम सेट करना) तो आपको बाह्य के अनुरोधों को समझने के लिए उस कोड को समायोजित करने की आवश्यकता है डोमेन कस्टम डोमेन के अपने डेटाबेस के अनुसार डोमेन। आप इसके लिए सीधे DNS का उपयोग भी कर सकते हैं! की तर्ज पर

कुछ:

if http "host" header does not end in domain.com: 
    cname = get_cname_record(http "host" header value) 
    if cname does not end in domain.com: 
     return error 404 
    else: 
     site = first part of cname 
else: 
    site = first part of http "host" header 

तो फिर आप अपने "कस्टम डोमेन डेटाबेस" के रूप में डीएनएस उपयोग कर सकते हैं। सुनिश्चित करें कि आप एक DNS कैश का उपयोग कर रहे हैं, क्योंकि उन प्रश्नों को प्रत्येक अनुरोध पर किया जाएगा।

+0

धन्यवाद, आपके psuedocode समाधान को समझने में मदद की। DNS कैश के बारे में, सर्वर पर यह डिफ़ॉल्ट नहीं है? मेरा मतलब है कि ओएस (उबंटू) द्वारा DNS क्वेरी कैश की जाती हैं। क्या मुझे इसके लिए कुछ अतिरिक्त करने की ज़रूरत है? – Nasir

+0

यह इस बात पर निर्भर करता है कि आप "get_cname_record" को कैसे कार्यान्वित करते हैं। यदि आप gethostbyaddr() या व्युत्पन्न (सबसे अधिक संभावना विकल्प) का उपयोग करते हैं तो आपका सिस्टम आमतौर पर कुछ प्रकार के कैशिंग प्रदान करता है। लेकिन लुकअप के गुच्छा को लूप करके इसे बेंचमार्क करें ताकि आप इसके साथ जाल में न आएं। मैंने इसे देखा है, तो बस एक एफवाईआई। – GomoX

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