首页 > 语言 > JavaScript > 正文

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

2024-05-06 15:44:20
字体:
来源:转载
供稿:网友

本文实例讲述了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, res, {      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, res) {  res.end('port : 9999');}).listen(9999, '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 时,就会自动帮我们代理到指定端口的服务上去。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

图片精选