2017-12-14 1 views
0

node-http-proxy 라이브러리를 사용하여 전달 프록시 서버를 만듭니다. 난 결국 일부 미들웨어를 사용하여 비행 중에 html 코드를 수정할 계획입니다. 9000노드 http 프록시를 사용하는 전달 http 프록시

그러나 나는 정상적인 HTTP 웹 사이트를 방문 할 때마다, 내 서버 : 이것은

var httpProxy = require('http-proxy') 
httpProxy.createServer(function(req, res, proxy) { 
    var urlObj = url.parse(req.url); 
    console.log("actually proxying requests") 
    req.headers.host = urlObj.host; 
    req.url   = urlObj.path; 

    proxy.proxyRequest(req, res, { 
    host : urlObj.host, 
    port : 80, 
    enable : { xforward: true } 
    }); 
}).listen(9000, function() { 
    console.log("Waiting for requests..."); 
}); 

가 지금은 크롬의 프록시 설정을 수정하고, 로컬 호스트 등의 웹 프록시 서버 주소를 사용 같은 프록시 서버 코드는 모습입니다 오류가 발생 함 "Error: Must provide a proper URL as target"

저는 nodejs에서 새로운데, 여기서 내가 잘못하고있는 것을 완전히 이해하지 못합니까?

답변

1

동적 대상을 사용하려면 들어오는 요청에 따라 동적으로 대상을 설정할 수있는 프록시 인스턴스를 사용하는 일반 HTTP 서버를 만들어야합니다.

베어 뼈 전달 프록시 :

const http  = require('http'); 
const httpProxy = require('http-proxy'); 
const proxy  = httpProxy.createProxyServer({}); 

http.createServer(function(req, res) { 
    proxy.web(req, res, { target: req.url }); 
}).listen(9000,() => { 
    console.log("Waiting for requests..."); 
}); 
+0

이는 비록 HTTP 전송을 위해 일 것인가? –

+0

@AyushGoel correct. HTTPS를 쉽게 프록시 할 수는 없습니다 (특히 응답을 수정하려는 경우 특히 그렇습니다). 이것이 의도라면. – robertklep

+0

왜 그런가요? 자체 서명 된 인증서를 사용하여 인증서를 수행 할 수 있어야하고 ('--ignore-certificate-errors'를 사용하여) 인증서 경고를 피하기 위해 크롬을 요청해야합니다. https에 대한 베어 본 포워딩 프록시 코드도 제공 할 수 있습니까? . –