一. 反向代理的應用場景
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