用nodeJS搭建一个本地反向代理环境
2017-02-08 00:00
141 查看
调试线上代码的时候,我们经常遇到的一个问题就是 本地一套环境,线上一套环境,本地没有的文件用线上的这种需求。我简单来说下使用nodejs如何做到。
先说下不用nodejs我们怎么做,工具比如fiddler,代理服务器比如nproxy之类都可以完成。但是很麻烦啊,要配置规则还要安装工具,改代理端口之类的,好麻烦,或者用apache或者nginx编写复杂的rewrite规则,apache下还要写抓反向代理的脚本等等。。好麻烦。
所以今天分享一下我在项目中是如何解决的。
首先,你本地需要有一个server。
我选择node-static这个包,很快速的就完成了一个本地server的配置,看代码或者官方文档吧。
简单解释一下上面的代码吧,是从我一个项目里摘出来的。
首先node-static和http建立了一个本地的http server,然后在当文件本地不存在时,使用dns模块和request模块,来进行反向代理线上资源。
dns模块可以根据host查找到线上地址的ip,然后使用request直接访问ip,伪造headers,来请求真实资源,资源拿到之后pipe到res中返回即可。
其实nginx和apache也是这么干的~拿nodejs做起来就是这么简单。
先说下不用nodejs我们怎么做,工具比如fiddler,代理服务器比如nproxy之类都可以完成。但是很麻烦啊,要配置规则还要安装工具,改代理端口之类的,好麻烦,或者用apache或者nginx编写复杂的rewrite规则,apache下还要写抓反向代理的脚本等等。。好麻烦。
所以今天分享一下我在项目中是如何解决的。
首先,你本地需要有一个server。
我选择node-static这个包,很快速的就完成了一个本地server的配置,看代码或者官方文档吧。
var nodeStatic = require('node-static').Server; var request = require("request"); var dns = require("dns"); var fileServer = new nodeStatic("./"); var http = require("http"); var httpServer = http.createServer(function(req, res) { req.addListener('end', function() { fileServer.serve(req, res, function(err, result) { if (err && (err.status === 404)) { //本地没有文件访问线上,透明server dns.resolve4(req.headers.host,function(err,addresses){ if(err){ res.writeHeader(200,'text/html'); res.write(req.url); res.end(err); }else{ var ip = addresses[0]; var p = 'http://'+ip+req.url; req.headers['Host'] = req.headers.host; request({ method:req.method, url:p, headers:req.headers }).pipe(res); } }); } }); }).resume(); }); httpServer.listen(1314);
简单解释一下上面的代码吧,是从我一个项目里摘出来的。
首先node-static和http建立了一个本地的http server,然后在当文件本地不存在时,使用dns模块和request模块,来进行反向代理线上资源。
dns模块可以根据host查找到线上地址的ip,然后使用request直接访问ip,伪造headers,来请求真实资源,资源拿到之后pipe到res中返回即可。
其实nginx和apache也是这么干的~拿nodejs做起来就是这么简单。
相关文章推荐
- mark一篇文章--用nodejs搭建一个本地反向代理环境
- CentOS7开发环境搭建(二)——反向代理服务器nginx
- NodeJS搭建本地服务器环境
- 搭建ATS反向代理服务器压力测试环境
- 利用nodeJs anywhere搭建本地服务器环境的方法
- opencv环境的搭建,并打开一个本地PC摄像头。
- 发现一个工具,可以将psd 导出成 html,搭建nodejs环境测试
- 利用nodeJs anywhere搭建本地服务器环境
- windows环境下安装apache及使用apache搭建反向代理
- 使用Nodejs快速搭建一个的本地静态文件服务器
- 教你使用gulp搭建一个react本地服务器环境
- 使用nodejs、ejsExcel、express、vuejs编写一个excel转json的工具——第一步:创建vuejs项目并搭建开发环境
- 3 微信开发本地代理环境的搭建--实现将内网ip映射到外网
- nodejs新建一个工程环境的搭建
- 用nodejs http-server搭建本地服务环境
- 用 Ubuntu 搭建一个 Ruby on Rails 本地开发环境
- 11-搭建nginx反向代理环境
- 手把手与你搭建一个MASM开发环境学写Makefile
- 搭建squid反向代理服务器
- 我的大学科研项目纪实(8)——搭建本地环境