2013-08-06 4 views
7

मेरे पास एक वेबपैप है जहां मैं लोगों को अपने ऐप सर्वर (उदा: mysite.com/their-site) पर उप-साइट बनाने की अनुमति देता हूं। मैं चाहता हूं कि वे अपने ऐप पर उप-साइट पर अपने डोमेन को इंगित करने में सक्षम हों। एक साझा होस्टिंग सर्वर पर आप डोमेन को कैसे संलग्न करते हैं।नोडज: डोमेन पर डोमेन को मानचित्र बनाना चाहते हैं

मुझे सच में यकीन नहीं है कि इस बारे में कैसे जाना है। अगर कोई मुझे प्रबुद्ध कर सकता है तो इसकी सराहना करेंगे।

+0

क्या आप इन्हें अलग-अलग Node.js उदाहरणों पर इंगित कर रहे हैं? या सभी एक ही ऐप? – Brad

+0

उदाहरण में आप जो उल्लेख करते हैं वह भ्रमित है: 'mysite.com/उनकी साइट' एक अलग डोमेन पर नहीं होगी, यह एक अलग मार्ग है। आपके पास आमतौर पर 'domain.com' जैसे डोमेन और' mail.domain.com' जैसे उप डोमेन होते हैं। क्या आप ऐसे अनुरोधों को पुनर्निर्देशित करना चाहते हैं या उन्हें संसाधित करना चाहते हैं? – user568109

+0

@ user568109 भ्रम के लिए खेद है। mysite.com/their-site मेरे आवेदन पर उनका पृष्ठ होगा। उनके पास कहीं और पंजीकृत डोमेन हो सकता है, जिसे मैं उनके साइट पर उनके पेज पर मैप करने का विकल्प चाहूंगा। –

उत्तर

5

यदि आप node http-proxy या nginx जैसे कुछ का उपयोग करते हैं तो आप अलग-अलग स्थानीय बंदरगाहों पर अलग-अलग साइटों को चला सकते हैं और फिर डोमेन नाम को मानचित्र बना सकते हैं। मैं http प्रॉक्सी का उपयोग करता हूं लेकिन दूसरों को nginx पसंद है।

इसके लिए काम करने के लिए, आपको आईपी पते पर हल होने वाली DNS प्रविष्टियों को जोड़ना होगा जो आपकी रिवर्स प्रॉक्सी चल रही है। फिर उदाहरण के लिए, बंदरगाह 80 अनुरोध वापस स्थानीयहोस्ट में मैप किया जाएगा: 3000।

यह प्रत्येक ऐप अलगाव में और अन्य साइटों से अलग प्रक्रियाओं में चलाने की अनुमति देता है। वे एक दूसरे को दुर्घटनाग्रस्त नहीं कर सकते हैं। आपके पास नेमस्पेस समस्याएं भी नहीं हैं जहां दोनों ऐप्स एक ही पथ का दावा करते हैं।

HTTP प्रॉक्सी के लिए मेरे app.js इस तरह दिखता है:

var proxyPort = 80; 
var http = require('http'); 
var httpProxy = require('http-proxy'); 

var options = { 
    router: { 
     'localhost': '127.0.0.1:3000', 
     'somesite.com': '127.0.0.1:3000', 
     'othersite.com': '127.0.0.1:4000' 
    } 
}; 
console.log('Proxy Routing:') 
console.log(options);var options = { 
console.log(); 

var proxyServer = httpProxy.createServer(options); 
proxyServer.listen(proxyPort); 
console.log('Proxy listening on port ' + proxyPort); 

तुम भी रास्तों के साथ मार्ग ले सकते हैं। देखें: https://github.com/nodejitsu/node-http-proxy/issues/232

तो अधिक अपने मूल अनुरोध की तरह, आप कर सकते हैं:

router: { 
    'myhost.com/appA': '127.0.0.1:8080', 
    'myhost.com/appB': '127.0.0.1:9090/appB', 
    'myhost.com/appC': '127.0.0.1:9090/appC' 
    } 
}; 

एक अन्य विकल्प बस प्रति ग्राहक एक मार्ग/पेज प्रदान करना है और फिर यह केवल एक DNS समस्या है। आप DNS सेट अप करेंगे ताकि सभी डोमेन नाम आपके ऐप पर चलने वाले एक आईपी पते को हल कर सकें। इसमें कुछ डाउनसाइड्स हैं:

  1. डोमेन 1.com/user1, domain1.com/user2, domain2.com/user1 और domain2.com/user2 सभी काम करेंगे जो आप शायद नहीं चाहते हैं।
  2. क्या आप सभी कोड को नियंत्रित करते हैं या कोड कोड करते हैं? यदि यह उपयोगकर्ता कोड प्रदान करता है तो आप कुछ अलगाव चाहते हैं इसलिए अलग-अलग ऐप्स।
  3. आपको अभी भी लिनक्स में पोर्ट 80 पर चलाने के लिए http प्रॉक्सी की आवश्यकता है और सूडो के रूप में नहीं चलाया जा सकता है।
+0

मेरे मामले में मुझे लगता है कि मैं एक मार्ग पर एक डोमेन स्थापित कर रहा हूं। तो क्या इस तरह कुछ काम करेगा: 'user1domain.com': '127.0.0.1:9090/user1page'? –

+0

यदि मैं इस एप्लिकेशन में मैप किए गए 100+ डोमेन रखने की योजना बना रहा हूं तो यह भी पसंदीदा तरीका होगा? –

+0

हां, यह ठीक काम करना चाहिए। एक 100+ कोई समस्या नहीं होगी - बेशक यह सब प्रत्येक डोमेन और संसाधन मांगों के भार पर निर्भर करता है। अच्छा क्या है रूटिंग का मतलब यह भी है कि यदि कभी आवश्यकता हो तो आप कई बक्से तक पहुंच सकते हैं। – bryanmac

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