2014-02-24 5 views
0

참고 : 내 질문은 this question과 매우 유사 할 수 있지만 해결책은 저를 위해 작동하지 않습니다.노드 연결을 사용하는 HTTP 프록시

제 문제는 원래의 포스터와 같습니다. 외부 리소스에 액세스해야하며 크로스 도메인 보안 제한을 피하기 위해 프록시를 사용해야합니다. 이 샘플 블로그 게시물을 참조한 적이 있습니다. http://nthloop.com/blog/local-dev-with-nodejs-proxy/

프록시가 외부 리소스 (URL에 'cgi'포함)를로드하려고합니다. 그러나이 코드를 사용하면 연결 모듈을 사용하여 로컬 (고정) 파일을 기록 할 수 없습니다. 시간 초과, 오류 메시지, 등등 ... 내 server.js 파일의 전체 코드를 게시하고

:

var httpProxy = require('http-proxy'); 
var connect = require('connect'); 
var endpoint = { 
     host: '11.0.0.120', 
     port: 8081 
    }; 

var proxy = new httpProxy.RoutingProxy(); 
var app = connect() 
    .use(function(req, res) { 
     if (req.url.indexOf('cgi') >= 0) { 
      proxy.proxyRequest(req, res, endpoint); 
     } else {connect.static(__dirname)}; 
    }) 
    .use(connect.static(__dirname)) 
    .listen(8182); 

This question의 솔루션은 내가 다른 조건을 포함 할 필요가 있다고 언급 듯 . 그것은 하나의 유무에 관계없이 깨지 않습니다.

도움 주셔서 감사합니다.

답변

0

당신이 사용할 수있는 다음() 다음의 미들웨어에 요청 흐르게하기 - 정적 파일 경로 중 하나가 그 안에 'CGI'를 가지고있는 경우

var app = connect() 
    .use(function(req, res, next) { 
     if (req.url.indexOf('cgi') >= 0) { 
      proxy.proxyRequest(req, res, endpoint); 
     } else { 
      next(); 
     )}; 
    }) 
    .use(connect.static(__dirname)) 
    .listen(8182); 
+0

감사합니다. 나는 이것을 시도했으나 효과가 없었습니다. 내가 잘못 입력 한 경우 다시 시도 할 것입니다. – Jason

+0

** 다음 ** 매개 변수를 추가하지 못했습니다. 방금 다시 살펴 봤는데 지금은 작동 중입니다. 고맙습니다! – Jason

0

죄송합니다. 첫 번째 호출에 use (connect ...) 함수를 바꾸면됩니다. 왜 이것이 효과가 있었는지 또는 그것이 최선의 접근 방법인지를 모릅니다. 또한 else 문이 필요하지 않았습니다.

누군가가 더 나은 설명을 제공 할 수 있다면 답변을 수락 할 수 있습니다. 여기 내 작업 코드입니다 :

var httpProxy = require('http-proxy'); 
var connect = require('connect'); 
var endpoint = { 
     host: '11.0.0.120', 
     port: 8081 
    }; 

var proxy = new httpProxy.RoutingProxy(); 
var app = connect() 
    .use(connect.static(__dirname)) 
    .use(function(req, res) { 
     if (req.url.indexOf('cgi') >= 0) { 
      proxy.proxyRequest(req, res, endpoint); 
     } 
    }) 
    .listen(8182); 
+0

이 작동하지 않습니다 . 먼저 프록시 요청을 필터링 한 다음 정적 미들웨어에 다른 요청을 전달해야합니다. –

+0

나는 당신의 의견을 정말로 이해하지 못한다. 정적 파일에 'cgi'가 있으면 게시 된 솔루션도 작동하지 않습니다. 맞습니까? 그건 의도적으로입니다. 내 솔루션에서 'cgi'가 포함 된 정적 파일이 우선 적용되며 프록시 트래픽이 우선 적용됩니까? – Jason