node.js使用 http-proxy 建立代理伺服器操作示例
阿新 • • 發佈:2020-02-11
本文例項講述了node.js使用 http-proxy 建立代理伺服器操作。分享給大家供大家參考,具體如下:
代理,也稱網路代理,是一種特殊網路服務,允許一個終端通過代理服務與另一個終端進行非直接的連線,這樣利於安全和防止被攻擊。
代理伺服器,就是代理網路使用者去獲取網路資訊,就是資訊的中轉,負責轉發。
代理又分 正向代理 和 反向代理:
- 正向代理:幫助區域網內的使用者訪問外面的服務。
- 反向代理:幫助外面的使用者訪問區域網內部的服務。
一、安裝 http-proxy
npm install http-proxy --save
二、代理本地服務
const http = require('http'); const httpProxy = require('http-proxy'); //建立一個代理服務 const proxy = httpProxy.createProxyServer(); //建立http伺服器並監聽8888埠 let server = 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埠服務程式碼:
const http = require('http'); http.createServer(function (req,res) { res.end('port : 9999'); }).listen(9999,'0.0.0.0');
當們在本地訪問 8888 埠時,proxy 會幫我們把請求代理到 9999 埠服務,然後返回資料。
二、通過host實現多個虛擬主機,共用一個埠
const http = require('http'); const httpProxy = require('http-proxy'); //建立一個代理服務 const proxy = httpProxy.createProxyServer(); //虛擬主機 const hosts = { 'www.a.me': 'http://localhost:8888','www.b.me': 'http://localhost:9999',}; //建立http伺服器並監聽80埠 let server = http.createServer(function (req,res) { //獲取主機名 let host = req.headers['host']; host = host.split(':')[0]; //根據主機名,找到要代理的服務 let target = hosts[host]; if (target) { proxy.web(req,{ target: target }); proxy.on('error',function (err) { console.log(err); }); } else { res.end('end'); } }); server.listen(80,'0.0.0.0');
8888.js服務程式碼:
const http = require('http'); http.createServer(function (req,res) { res.end('port : 8888'); }).listen(8888,'0.0.0.0');
9999.js服務程式碼:
const http = require('http'); http.createServer(function (req,'0.0.0.0');
注意 www.a.me 和 www.b.me 這兩個域名需加入 C:\Windows\System32\drivers\etc\hosts 檔案中。
127.0.0.1 www.a.me
127.0.0.1 www.b.me
當我們訪問 www.a.me 或 www.b.me 時,就會自動幫我們代理到指定埠的服務上去。
希望本文所述對大家node.js程式設計有所幫助。