पर एक रेराइट मॉड्यूल देखना चाहते हैं। और जब मिडलवेयर में किसी अन्य प्रॉक्सी मॉड्यूल के साथ प्रयोग किया जाता है, तो वे एक रिवर्स प्रॉक्सी के रूप में मिलकर काम करते हैं।
मैं उन्हें इस्तेमाल अपने स्थानीय बॉक्स में एकल पृष्ठ अनुप्रयोगों के विकास, जबकि (तो मैं न कॉन्फिगर करना अपाचे/nginx स्थानीय स्तर पर)
इस आदेश CORS से बचने और (जे एस/सीएसएस/छवियों को छोड़कर) सभी पृष्ठों भेजने के लिए काम करने के लिए एसपीए के लिए index.html करने के लिए।
var connect = require('connect');
var modRewrite = require('connect-modrewrite');
var proxy = require('proxy-middleware');
var url = require('url');
var app = connect()
.use(modRewrite([
"^\/api\/(.*) /send-to-api/api/$1 [L]",
"^(.*)\/css\/(.*) /send-to-ui/css/$2 [L]",
"^(.*)\/js\/(.*) /send-to-ui/js/$2 [L]",
"^(.*)\/images\/(.*) /send-to-ui/images/$2 [L]",
"^(.*)\/fonts\/(.*) /send-to-ui/fonts/$2 [L]",
"^(.*) /send-to-ui/index.html [L]"
]))
.use('/send-to-api', proxy(url.parse('http://api.server.dev/'))) // Don't forget the last backslash
.use('/send-to-ui', proxy(url.parse('http://ui.server.dev/'))) // Don't forget the last backslash
.listen(9000)
चेक कि मैं [L]
झंडा उपयोग करें, क्योंकि मैं इसे फिर से लिखने और नियमों के बाकी छोड़ना चाहते।
इस मामले में, केवल /api
यूआरएल api.server.dev
पर प्रक्षेपित हो जाते हैं, बाकी ui.server.dev
पर जाते हैं। यूआरएल उपसर्ग /send-to-api
और /send-to-ui
अस्थायी हैं और मैं उन्हें अलग-अलग करने के लिए उपयोग करता हूं, जहां इसे connect
द्वारा उनके संबंधित सर्वर पर भेजने से पहले हटा दिया जाता है।
और हाँ, रीडायरेक्ट के मामले में, proxy-middleware
बदल जाएगा Location
हैडर localhost:9000
स्रोत
2017-06-08 23:10:17
+1 यह नियमित अभिव्यक्तियों के उपयोग के बराबर एक mod_rewrite के बराबर है। धन्यवाद, स्टीव, मैं इसे आज़माउंगा। – ampersand
यह एनपीएम पर है/क्या यह होगा? मुझे एनपीएम का उपयोग करना आसान लगता है। इसके अलावा अगर मैं कुछ नोड.जेएस होस्टिंग प्रदाताओं का उपयोग करना चाहता हूं जो निर्भरताओं को हल करने के लिए एनपीएम का उपयोग करते हैं, तो मैं इसका उपयोग नहीं कर सकता। मैं इसे अपने कोड में फिर से पैकेज नहीं करना चाहता हूं। – ampersand
मुझे एनपीएम नहीं माना जाएगा - अधिकांशतः क्योंकि इसे पुस्तकालय के बजाय "स्क्रिप्ट" या "बाइनरी" के रूप में डिज़ाइन किया गया है। लेकिन अगर अन्य लोगों से रूचि हो तो वह बदल सकता है! –