使用node.js实现反向代理
一. 反向代理的应用场景
1. 静态资源与动态资源分离 e.g. 图片服务器
2. AJAX跨域访问
3. 搭建统一服务网关接口
二. 使用node.js实现反向代理
1. 安装http-proxy模块
npm install http-proxy
2. 使用http-proxy模块启动代理服务器
1 // 导入http模块 2 var http = require('http'); 3 // 导入http-proxy模块 4 var httpProxy = require('http-proxy'); 5 6 // 提供服务的端口号 7 var PORT = 1234; 8 9 // 创建反向代理服务 10 var proxy = httpProxy.createProxyServer(); 11 // 监听错误事件 12 proxy.on('error', function (err, req, res) { 13 // 输出空白响应数据 14 res.write('error!'); 15 res.end(); 16 }); 17 18 // 创建服务 19 var app = http.createServer(function (req, res) { 20 // 执行反向代理 21 proxy.web(req, res, { 22 // 目标地址 23 target: 'http://localhost:8080' 24 }); 25 }); 26 27 // 启动服务 28 app.listen(PORT, function () { 29 console.log('server is running at %d', PORT); 30 });
总结:创建了一个提供反向代理功能的服务器,该服务器启动后监听1234端口,接收到请求之后,将请求转发至目标地址(target)
三个步骤:
1) 创建反向代理服务
2) 创建服务器,提供反向代理服务
3) 启动服务器,监听指定端口
3. 效果图
访问localhost:1234之后,反向代理服务器会将请求转发至localhost:8080