2013-05-08 3 views
6

최근 소셜 미디어 사이트에 접속하여 공개 피드를 캐시하는 node.js 앱을 만들었습니다. 나는 기존의 npm 모듈을 사용하여 소셜 미디어 API에 쉽게 액세스 할 수 있습니다. 그것은 내 dev 환경에서 매력처럼 작동하지만 우리 프로덕션 환경에서 그들은 프록시를 통과해야하기 때문에 시간 초과 요청이 있습니다.node.js http를 오버라이드하여 모든 아웃 바운드 요청에 프록시 사용

npm 모듈을 수정할 필요없이 어떻게 아웃 바운드 요청을 프록시를 통해 만들 수 있습니까?

답변

3

http.globalAgent 속성을 사용하십시오. 이렇게하면 프로세스에서 실행중인 모든 요청을 차단할 수 있습니다. 그런 다음 해당 요청을 수정하여 프록시 서 v에 맞게 올 Y로 형식화 할 수 있습니다.

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

또 다른 옵션은 해당 응용 프로그램에 대한 프록시 예외를 만드는 것입니다.

+3

요 수 http.globalAgent를 사용하는 예제를 제공합니다. {host : 'http.proxy.somewhere.com', 포트 : 1234, 경로 : 'http://www.google.com'} '을 옵션 및 그 자신의 요청에 대한 작동하지만'http : // localhost.options = {host : 'http.proxy.somewhere.com', port : 1234};'내 회사 프록시는 http : // http .proxy.somewhere.com : 1234'이고 작동하지 않습니다. – jonnie

+1

예, 모든 아웃 바운드 요청을 globalAgent가있는 프록시를 통해 라우팅하는 예를 제공해주십시오. –

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 
}); 
관련 문제