2012-06-29 17 views
5

का उपयोग कर एक्सप्रेस में सबडोमेन द्वारा मार्ग निर्दिष्ट करना मैं vhost एक्सप्रेस/कनेक्ट मिडलवेयर का उपयोग कर रहा हूं और मैं थोड़ा उलझन में हूं कि इसका उपयोग कैसे किया जाना चाहिए। मैं सबडोमेन के साथ मेजबानों पर मार्गों का एक सेट लागू करना चाहता हूं, और बिना किसी उप डोमेन के मेजबानों के लिए आवेदन करने के लिए एक और सेट।vhost midware

module.exports = function(subdomain){ 

    var app = express.createServer(); 

    require('./routes')(app, subdomain); 

    return app; 
} 

और फिर routes.js में मैं कि क्या उप डोमेन चर पर मार्गों का सेट, निर्भर चलाना चाहते हैं:

मेरी app.js फ़ाइल में, मैं

var app = express.createServer(); 

app.use...(middlware)... 
app.use(express.vhost('*.host', require('./domain_routing')("yes"))); 
app.use(express.vhost('host', require('./domain_routing')("no"))); 
app.use...(middlware)... 

app.listen(8000); 

और फिर domain_routing.js में है पास "yes" या "no" है।

क्या मैं सही रास्ते पर हूं या यह नहीं है कि आप इस मिडलवेयर का उपयोग कैसे करते हैं? मैं इस तथ्य पर थोड़ा उलझन में हूं कि दो app सर्वर उदाहरण बनाए जा रहे हैं (इस तरह वेब पर उदाहरण कैसे काम करते हैं)। क्या मुझे इसके बजाय मूल app सर्वर इंस्टेंस में पास करना चाहिए और केवल उपडोमेन राउटर के बजाय अलग बनाने के बजाय इसका उपयोग करना चाहिए?

उत्तर

2

हां, आप सही रास्ते पर हैं। आप प्रत्येक vhost के लिए एक अलग सर्वर उदाहरण होना चाहिए। यह http.Server या express app हो।

यदि आप मूल app पास करते हैं, तो आप vhost को भेजे गए अनुरोध को मूल ऐप पर भेज दिया जाएगा। इसलिए, जब तक कि vhost में पथ नहीं हैं जिनका उपयोग मूल सर्वर में नहीं किया जाता है, तो यह प्रतिक्रिया प्राप्त होगी जैसे अनुरोध मूल सर्वर पर भेजा गया था।

कनेक्ट किए गए दस्तावेज़ों से

connect() 
    .use(connect.vhost('foo.com', fooApp)) 
    .use(connect.vhost('bar.com', barApp)) 
    .use(connect.vhost('*.com', mainApp)) 
+0

धन्यवाद! और मेरा दूसरा सवाल यह है कि यदि मैं मूल सर्वर उदाहरण के लिए उपयोग करने के लिए मिडलवेयर निर्दिष्ट करता हूं, और फिर मैं vhosts के लिए अलग-अलग सर्वर उदाहरणों का उपयोग करता हूं, तो मूल सर्वर के लिए उपयोग किए जाने वाले मिडलवेयर को vhost पर ले जाया जाएगा? या इसके बजाय मैं विशेष रूप से vhosts (मूल सर्वर पर vhost midware को छोड़कर) पर मिडलवेयर का उपयोग कर रहा हूं, असल में, मैं सभी संभावित vhosts पर मिडलवेयर का उपयोग करने के लिए एक निर्बाध तरीका ढूंढ रहा हूं, बजाय समानता के समान मध्यवर्ती उपयोग करने के बजाय vhosts में से प्रत्येक जो दोहराया जाता है ... – user730569

+0

नहीं, आपको सभी vhosts पर विशेष रूप से मिडलवेयर का उपयोग करने की आवश्यकता नहीं है। किसी भी मिडलवेयर जिसे आप सभी ऐप्स के लिए उपयोग करना चाहते हैं, वोहोस्ट से पहले '.use''d किया जा सकता है।'use''d –

+0

यह बढ़िया है! लेकिन जिज्ञासा से, यह कैसे काम करता है? मुझे लगता है कि मैं थोड़ा उलझन में हूं कि 'server.emit ("request", req, res);' दृश्यों के पीछे करता है। – user730569

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