1. 程式人生 > 程式設計 >node.js使用 http-proxy 建立代理伺服器操作示例

node.js使用 http-proxy 建立代理伺服器操作示例

本文例項講述了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程式設計有所幫助。