2012-11-22 2 views
3

나는 nodejs와 함께 작은 정방향 프록시를 만들어 appfog에서 호스팅했습니다. 내 브라우저의 프록시를 설정 한 후 로컬에서 작동하지만, appfog에서 호스팅되는 호스트를 사용하려고하면 다음과 같이 표시됩니다. * Errore 130 (net :: ERR_PROXY_CONNECTION_FAILED) : 서버 프록시가 아닌 클라이언트 *. 이것은 내 스크립트입니다. 코드 :nodejs의 forward proxy

var http = require('http'); 
http.createServer(function(request, response) { 
http.get(request.url, function(res) { 
    console.log("Got response: " + res.statusCode); 
    res.on('data', function(d) { 
     response.write(d); 
    }); 
    res.on('end', function() { 
    response.end(); 
    }); 
}).on('error', function(e) { 
    console.log("Got error: " + e.message); 
}); 
}).listen(8080); 

내가 누락 된 것이 있습니까?

코드가 작동하지만 난 이런 식으로 사용하여 시도 일단 :

그것은 작동하지 않습니다 아직
var port = process.env.VCAP_APP_PORT || 8080; 
var http = require('http'); 
var urldec = require('url'); 
http.createServer(function(request, response) { 
var gotourl=urldec.parse(request.url); 
var hosturl=gotourl.host; 
var pathurl=gotourl.path; 
var options = { 
    host: hosturl, 
    port: 80, 
    path: pathurl, 
    method: request.method 
    }; 

    http.get(options, function(res) { 
    console.log("Got response: " + res.statusCode); 
    res.on('data', function(d) { 
     response.write(d); 
    }); 
    res.on('end', function() { 
     response.end(); 
    }); 
    }).on('error', function(e) { 
    console.log("Got error: " + e.message); 
    response.write("error"); 
    response.end(); 
    }); 
}).listen(port); 
console.log(port); 

: 내가 주소를 핑 (ping) 할 때 내가 요청 시간이 초과있어, 내가 같은있어 ERR_PROXY_CONNECTION_FAILED ... 로컬로 작동하지만 프록시로 원격 주소를 사용하는 경우

답변

2

첫 번째 : 응용 프로그램은 cloudfoundry에서 발급 한 포트 번호를 사용해야합니다. 이 응용 프로그램은 포트 80에서 들어오는 요청을 받아서 VCAP_APP_PORT에 전달하는 역방향 프록시 뒤에 있습니다. 로 보낼 해시 당신은 옵션을 사용해야 할 수도 있습니다 :

http://<app_name>.<infra>.af.cm // port 80 

그리고 해당 지역의 응용 프로그램 : 다음

var port = process.env.VCAP_APP_PORT || 8080; // 8080 only works on localhost 

.... 

}).listen(port); 

이 같은 호스팅 응용 프로그램에 액세스

http://localhost:8080 

세컨드 request.url을 제공하는 대신 http.get 메소드를 사용하십시오.

var options = { 
    host: '<host part of url without the protocal prefix>', 
    path: '<path part of url>' 
    port: 80, 
    method: 'GET' } 

로컬 상자와 AppFog에서 다음 코드를 테스트했는데 IP가 다릅니다. Whatismyip은 로컬로 실행될 때 내 로컬 interent IP 주소를 반환했으며 AppFog 호스트 된 응용 프로그램에서는 AppFog 서버 ip를 반환했습니다.

+0

안녕하세요, 답변 주셔서 감사합니다.하지만 이미 시도해 보았습니다. 사이트를 방문 할 때 내 IP를 테스트 할 때 프록시를 사용하지 않고 동일한 IP를 사용하고 있습니다. 서버에 HTTP 요청 그래서 나는 너무 서버 IP를 볼 수 있고 광산 아닌가요? – MkM

+0

내 대답 편집의 두 번째 부분을 참조하십시오. –

+0

다이내믹 URL을 사용하여 코드를 시도했지만 작동하지 않습니다. 다시 메일을 볼 수 있습니까? 감사합니다. – MkM