node 플러그인 http-proxy 역방향 에이전트 구현

5271 단어
최근에 직접 위챗 애플릿을 만들었는데 텐센트 클라우드의 애플릿 솔루션을 직접 샀어요. 어떻게 보면 사용하기에 적지 않은 문제가 생길 거예요. 하지만 채팅방에서 많은 사람들이 도와줄 거예요.
쓸데없는 말은 하지 마라. 다른 서비스를 하려면 이 작은 프로그램의 서버를 직접 쓰면 되지만 서버의 80포트는 이미 작은 프로그램에 의해 점용되었기 때문에 역방향 에이전트를 사용할 수밖에 없다. 말하자면 포트의 분배를 완성하는 것이다.우리는 도메인 이름을 루트로 나누어도 무방하다.com 도메인 이름이 요청된 경우 PHP 82 포트에 배포하여 실행합니다.무릇 BB.com 도메인 이름이 요청되어 ASP 83 포트에 배포됩니다.이렇게 유추하다.물론 이곳의 포트는 설명용일 뿐입니다. 임의로 설정할 수 있습니다. 어쨌든 80포트에서 받은 요청을 먼저 처리하고 나누어 드리겠습니다.역방향 대리는 통속적으로 말하면 왼손으로 오른손을 돌리는 것이다.
내 실제 프로젝트에 넣고 npm init에서 새로운 프로젝트를 설치하고 http-proxy 플러그인을 설치하여 프록시를 반대로 합니다. 이 서비스는 80개의 인터페이스를 사용합니다. 그리고 저는 이전의 작은 프로그램이 사용했던 80개의 인터페이스를 3000개의 인터페이스로 바꿉니다.(이 포트 번호는 모두 마음대로 선택하세요.)
프로젝트 아래에 앱을 새로 만듭니다.js 파일, 내용은 다음과 같습니다.
 1 var http = require('http'), httpProxy = require('http-proxy');  
 2   
 3 //   Proxy Server    
 4 var proxy = httpProxy.createProxyServer({});  
 5   
 6 //    
 7 proxy.on('error', function (err, req, res) {  
 8   res.writeHead(500, {  
 9     'Content-Type': 'text/plain'  
10   });  
11   res.end('Something went wrong. And we are reporting a custom error message.');  
12 });  
13     
14 //  ,  proxy.web(req, res config)    
15 var server = require('http').createServer(function(req, res) {  
16   //    
17   var host = req.headers.host, ip = req.headers['x-forwarded-for'] || req.connection.remoteAddress;  
18   console.log("client ip:" + ip + ", host:" + host);  
19     
20   switch(host){  
21     case 'www.111.cn':   
22         proxy.web(req, res, { target: 'http://localhost:3000' });  
23     break;  
24     case 'vote.111.cn':  
25         proxy.web(req, res, { target: 'http://localhost:9527' });  
26     break;
27     default:  
28         res.writeHead(200, {  
29             'Content-Type': 'text/plain'  
30         });  
31         res.end('Welcome to my server!');  
32   }  
33 });  
34   
35 console.log("listening on port 80")  
36 server.listen(80);  

코드에서 보듯이 www.111을 방문하면cn에서 요청은 3000 인터페이스로 전송되어vote에 접근합니다.111.cn에 9527이라는 인터페이스로 전송되었는데 자신이 당시에 매우 곤혹스러웠던 것은 어떻게 작은 프로그램의 80 인터페이스에서 전송을 하는지 사실 80은 독립된 서비스이다. 전송 하나만 하고 다른 서비스는 다른 포트에 올려야 한다.
node로 서버를 만들면pm2로 관리하는 것을 추천합니다. 이렇게 하면 한 서버의 모든 서비스를 감독하고 디버깅 개발에 이롭습니다.
다음으로 전송:https://www.cnblogs.com/wunan/p/6547990.html

좋은 웹페이지 즐겨찾기