node 플러그인 http-proxy 역방향 에이전트 구현
쓸데없는 말은 하지 마라. 다른 서비스를 하려면 이 작은 프로그램의 서버를 직접 쓰면 되지만 서버의 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
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.