2013-09-03 9 views
24

मैं प्रॉक्सी सर्वर के पीछे एक फसल नेटवर्क में काम कर रहा था। मेरे कोड में मैं इस थ्रेड में उल्लिखित दृष्टिकोण का उपयोग करके प्रॉक्सी सेट कर सकता हूं (How can I use an http proxy with node.js http.Client?)।नोड.जेएस वैश्विक प्रॉक्सी सेटिंग

लेकिन समस्या यह है कि, अधिकांश तृतीय पक्ष मॉड्यूल में प्रॉक्सी सेटिंग नहीं है और मैं प्रॉक्सी जोड़ने के लिए अपने कोड को संशोधित नहीं कर सकता। इसके अलावा मेरे कोड का उपयोग सीधे कनेक्शन वातावरण में किया जा सकता है जिसका अर्थ है कि मैं कोड में अपनी प्रॉक्सी सेटिंग को हार्ड-कोड नहीं कर सकता।

मैं जानता हूँ कि NPM प्रॉक्सी जो

 
npm config set proxy http://proxy.company.com:8080 
npm config set https-proxy http://proxy.company.com:8080 

है के लिए एक वैश्विक सेटिंग है लेकिन मैं किसी भी config Node.js. में समान नहीं मिला

क्या Node.js वैश्विक प्रॉक्सी सेटिंग का समर्थन करता है ताकि मुझे सभी कोड बदलने और आसानी से चालू और बंद करने की आवश्यकता न हो।

उत्तर

4

अंत में मैंने इस प्रश्न को (आंशिक रूप से) हल करने के लिए एक मॉड्यूल बनाया। असल में यह मॉड्यूल http.request फ़ंक्शन को फिर से लिखता है, फिर प्रॉक्सी सेटिंग को आग लगा दी जाती है। मेरे ब्लॉग पोस्ट http://blog.shaunxu.me/archive/2013/09/05/semi-global-proxy-setting-for-node.js.aspx

+0

ग्रेट सॉल्यूशन, मैं तीसरे भाग के मिडलवेयर का उपयोग कर रहा हूं, यह http अनुरोध करेगा, इस परिदृश्य में प्रॉक्सी समस्या को कैसे हल करें? – yuyue007

+0

मुझे लगता है कि मेरे ब्लॉग में कोड आपकी समस्या का समाधान कर सकता है यदि तृतीय पक्ष मॉड्यूल अनुरोध भेजने के लिए 'http' मॉड्यूल का उपयोग करता है। बस सुनिश्चित करें कि आपको तीसरे पक्ष के पहले मेरे मॉड्यूल की आवश्यकता है। –

+0

यूआरएल रिटर्न 404, मुझे यह एक http://geekswithblogs.net/shaunxu/archive/2013/09/05/semi-global-proxy-setting-for-node.js.aspx – haxpor

17

दुर्भाग्य से, ऐसा लगता है कि प्रॉक्सी जानकारी प्रत्येक कॉल पर http.request पर सेट की जानी चाहिए। नोड में वैश्विक प्रॉक्सी सेटिंग्स के लिए एक तंत्र शामिल नहीं है।

global-tunnel module NPM पर इस संभाल करने के लिए प्रकट होता है, तथापि:

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

globalTunnel.initialize({ 
    host: 'proxy.example.com', 
    port: 8080 
}); 

वैश्विक सेटिंग्स के बाद, दोनों http.requestinitialize के लिए एक कॉल के साथ स्थापित कर रहे हैं और requests पुस्तकालय प्रॉक्सी जानकारी का उपयोग करेंगे। एक NodeJS सेटिंग नहीं, मैं तुम्हें proxychains जो मैं नहीं बल्कि सुविधाजनक लगता है का उपयोग की सलाह देते हैं

process.env.http_proxy = 'http://proxy.example.com:3129'; 
globalTunnel.initialize(); 
+0

मिला है, इसलिए इसके लिए एक वैश्विक तंत्र है प्रॉक्सी सेटिंग? क्योंकि यह मूल रूप से env.http_proxy क्या है, नहीं? –

+0

वैश्विक सुरंग विन्यास में उपयोगकर्ता नाम और पासवर्ड निर्दिष्ट किया जा सकता है? –

0

:

मॉड्यूल भी http_proxy वातावरण चर का उपयोग कर सकते हैं। यह शायद आपके पैकेज मैनेजर में उपलब्ध है।

कॉन्फ़िग फ़ाइल में प्रॉक्सी (मेरे लिए /etc/proxychains.conf) स्थापित करने के बाद, आप चला सकते हैं proxychains npm start या proxychains4 npm start (अर्थात proxychains [command_to_proxy_transparently]) और अपने सभी अनुरोधों को स्वचालित रूप से प्रॉक्सी किया जाएगा।

मेरे लिए

कॉन्फ़िगरेशन सेटिंग:

ये कम से कम सेटिंग्स हैं आप (nslookup [proxyurl] का उपयोग करके आप प्रॉक्सी के आईपी प्राप्त कर सकते हैं) संलग्न करने के लिए

## Exclude all localhost connections (dbs and stuff) 
localnet 0.0.0.0/0.0.0.0 
## Set the proxy type, ip and port here 
http 10.4.20.103 8080 

होगा

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