本文实例讲述了node.js使用 http-proxy 创建代理服务器操作。分享给大家供大家参考,具体如下:代理,也称网络代理,是一种特殊网络服务,允许一个终端通过代理服务与另一个终端进行非直接的连接,这样利于安全和防止被攻击。代理服务器,就是代理网络用户去获取网络信息,就是信息的中转,负责转发。代理又分 正向代理 和 反向代理:

正向代理:帮助局域网内的用户访问外面的服务。

反向代理:帮助外面的用户访问局域网内部的服务。
正向代理:帮助局域网内的用户访问外面的服务。反向代理:帮助外面的用户访问局域网内部的服务。一、安装 http-proxy一、安装 http-proxy
npm install http-proxy --save


npm install http-proxy --save

二、代理本地服务二、代理本地服务
const http = require('http');
const httpProxy = require('http-proxy');
//创建一个代理服务
const proxy = httpProxy.createProxyServer();
//创建http服务器并监听8888端口
let server = http.createServer(function (req, res) {

//将用户的请求转发到本地9999端口上

proxy.web(req, res, {

target: 'http://localhost:9999'

});

//监听代理服务错误

proxy.on('error', function (err) {

console.log(err);

});
});
server.listen(8888, '0.0.0.0');


const http = require('http');
const httpProxy = require('http-proxy');
//创建一个代理服务
const proxy = httpProxy.createProxyServer();
//创建http服务器并监听8888端口
let server = http.createServer(function (req, res) {

//将用户的请求转发到本地9999端口上

proxy.web(req, res, {

target: 'http://localhost:9999'

});

//监听代理服务错误

proxy.on('error', function (err) {

console.log(err);

});
});
server.listen(8888, '0.0.0.0');

9999端口服务代码:
const http = require('http');
http.createServer(function (req, res) {

res.end('port : 9999');
}).listen(9999, '0.0.0.0');


const http = require('http');
http.createServer(function (req, res) {

res.end('port : 9999');
}).listen(9999, '0.0.0.0');

当们在本地访问 8888 端口时,proxy 会帮我们把请求代理到 9999 端口服务,然后返回数据。二、通过host实现多个虚拟主机,共用一个端口二、通过host实现多个虚拟主机,共用一个端口
const http = require('http');
const httpProxy = require('http-proxy');
//创建一个代理服务
const proxy = httpProxy.createProxyServer();
//虚拟主机
const hosts = {

'www.a.me': 'http://localhost:8888',

'www.b.me': 'http://localhost:9999',
};
//创建http服务器并监听80端口
let server = http.createServer(function (req, res) {

//获取主机名

let host = req.headers['host'];

host = host.split(':')[0];

//根据主机名,找到要代理的服务

let target = hosts[host];

if (target) {

proxy.web(req, res, {

target: target

});

proxy.on('error', function (err) {

console.log(err);

});

} else {

res.end('end');

}
});
server.listen(80, '0.0.0.0');


const http = require('http');
const httpProxy = require('http-proxy');
//创建一个代理服务
const proxy = httpProxy.createProxyServer();
//虚拟主机
const hosts = {

'www.a.me': 'http://localhost:8888',

'www.b.me': 'http://localhost:9999',
};
//创建http服务器并监听80端口
let server = http.createServer(function (req, res) {

//获取主机名

let host = req.headers['host'];

host = host.split(':')[0];

//根据主机名,找到要代理的服务

let target = hosts[host];

if (target) {

proxy.web(req, res, {

target: target

});

proxy.on('error', function (err) {

console.log(err);

});

} else {

res.end('end');

}
});
server.listen(80, '0.0.0.0');

8888.js服务代码:
const http = require('http');
http.createServer(function (req, res) {

res.end('port : 8888');
}).listen(8888, '0.0.0.0');


const http = require('http');
http.createServer(function (req, res) {

res.end('port : 8888');
}).listen(8888, '0.0.0.0');

9999.js服务代码:
const http = require('http');
http.createServer(function (req, res) {

res.end('port : 9999');
}).listen(9999, '0.0.0.0');


const http = require('http');
http.createServer(function (req, res) {

res.end('port : 9999');
}).listen(9999, '0.0.0.0');

注意 www.a.me 和 www.b.me 这两个域名需加入 C:\Windows\System32\drivers\etc\hosts 文件中。www.a.me www.b.me C:\Windows\System32\drivers\etc\hosts
127.0.0.1 www.a.me
127.0.0.1 www.b.me
127.0.0.1 www.a.me
127.0.0.1 www.b.me当我们访问 www.a.me 或 www.b.me 时,就会自动帮我们代理到指定端口的服务上去。希望本文所述对大家node.js程序设计有所帮助。