怎么在node.js中利用http-proxy 创建一个代理服务器?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。
代理又分 正向代理 和 反向代理:
正向代理:帮助局域网内的用户访问外面的服务。
反向代理:帮助外面的用户访问局域网内部的服务。
一、安装 http-proxy
npminstallhttp-proxy--save
二、代理本地服务
consthttp=require('http');
consthttpProxy=require('http-proxy');
//创建一个代理服务
constproxy=httpProxy.createProxyServer();
//创建http服务器并监听8888端口
letserver=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端口服务代码:
consthttp=require('http');
http.createServer(function(req,res){
res.end('port:9999');
}).listen(9999,'0.0.0.0');
当们在本地访问 8888 端口时,proxy 会帮我们把请求代理到 9999 端口服务,然后返回数据。
二、通过host实现多个虚拟主机,共用一个端口
consthttp=require('http');
consthttpProxy=require('http-proxy');
//创建一个代理服务
constproxy=httpProxy.createProxyServer();
//虚拟主机
consthosts={
'www.a.me':'http://localhost:8888',
'www.b.me':'http://localhost:9999',
};
//创建http服务器并监听80端口
letserver=http.createServer(function(req,res){
//获取主机名
lethost=req.headers['host'];
host=host.split(':')[0];
//根据主机名,找到要代理的服务
lettarget=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服务代码:
consthttp=require('http');
http.createServer(function(req,res){
res.end('port:8888');
}).listen(8888,'0.0.0.0');
9999.js服务代码:
consthttp=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 文件中。
127.0.0.1 www.a.me127.0.0.1 www.b.me
看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注恰卡编程网行业资讯频道,感谢您对恰卡编程网的支持。