node.js使用 http-proxy 创建代理服务器操作示例
本文实例讲述了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.1www.a.me
127.0.0.1www.b.me
当我们访问www.a.me或www.b.me时,就会自动帮我们代理到指定端口的服务上去。
希望本文所述对大家node.js程序设计有所帮助。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。