2013-05-08 7 views
6

मैंने हाल ही में एक node.js ऐप बनाया है जो सोशल मीडिया साइटों तक पहुंचता है और हमारे सार्वजनिक फ़ीड को कैश करता है। मैं सोशल मीडिया एपीआई तक पहुंचने में सुविधा के लिए कुछ मौजूदा एनपीएम मॉड्यूल का उपयोग कर रहा हूं। यह मेरे देव पर्यावरण में एक आकर्षण की तरह काम करता है लेकिन हमारे उत्पादन पर्यावरण अनुरोध पर समय समाप्त हो रहा है क्योंकि उन्हें प्रॉक्सी से गुज़रना पड़ता है।सभी आउटबाउंड अनुरोधों के लिए प्रॉक्सी का उपयोग करने के लिए node.js http को ओवरराइड करने के लिए कैसे करें

एनपीएम मॉड्यूल को संशोधित किए बिना मैं आउटबाउंड अनुरोध प्रॉक्सी के माध्यम से कैसे कर सकता हूं?

उत्तर

3

http.globalAgent प्रॉपर्टी का उपयोग करें। यह आपको आपकी प्रक्रिया में चल रहे सभी अनुरोधों को अवरुद्ध करने देगा। फिर आप उन अनुरोधों को प्रॉक्सी सर्वर के लिए ठीक से स्वरूपित करने के लिए संशोधित कर सकते हैं।

http://nodejs.org/api/http.html#http_http_globalagent

एक अन्य विकल्प है कि आवेदन के लिए एक प्रॉक्सी अपवाद बनाने के लिए है।

+3

यो सकता है आप http.globalAgent का उपयोग करने का एक उदाहरण देते हैं, मैं '{host: 'http.proxy.somewhere.com' पास करने में सक्षम हूं, पोर्ट: 1234, पथ: 'http://www.google.com'}' के रूप में विकल्प और यह मेरे स्वयं के अनुरोध के लिए काम करता है लेकिन मैंने 'http.globalAgent.options = {host: 'http.proxy.somewhere.com', पोर्ट: 1234} की कोशिश की है; 'जहां मेरी कंपनी प्रॉक्सी' http: // http है .proxy.somewhere.com: 1234' और यह काम नहीं किया – jonnie

+1

हां, कृपया ग्लोबलएजेंट के साथ प्रॉक्सी के माध्यम से सभी आउटबाउंड अनुरोधों को रूट करने का एक उदाहरण प्रदान करें। –

2

कि के लिए एक NPM मॉड्यूल है:

https://www.npmjs.com/package/global-tunnel

var globalTunnel = require('global-tunnel'); 

globalTunnel.initialize({ 
    host: '10.0.0.10', 
    port: 8080, 
    sockets: 50 // optional pool size for each http and https 
}); 

या यदि आप केवल प्रॉक्सी कुछ अनुरोध करना चाहते हैं, तो आप सुरंग पैकेज (जो वैश्विक सुरंग के पीछे असली ताकत है उपयोग कर सकते हैं इसके बाद के संस्करण):

https://www.npmjs.com/package/tunnel

var tunnel = require('tunnel'); 

// create the agent 
var tunnelingAgent = tunnel.httpsOverHttps({ 
    proxy: { 
    host: 'localhost', 
    port: 3128 
    } 
}); 

var req = https.request({ 
    host: 'example.com', 
    port: 443, 
    // pass the agent in your request options 
    agent: tunnelingAgent 
}); 
संबंधित मुद्दे

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