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

 更新时间:2020年02月10日 12:52:33   作者:怀素真  
这篇文章主要介绍了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, 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 时,就会自动帮我们代理到指定端口的服务上去。

希望本文所述对大家node.js程序设计有所帮助。

相关文章

  • 手把手教你更优雅的修改node_modules里的代码

    手把手教你更优雅的修改node_modules里的代码

    这篇文章主要给大家介绍了关于如何更优雅的修改node_modules里的代码的相关资料,文中通过实例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2023-02-02
  • node.js适合游戏后台开发吗?

    node.js适合游戏后台开发吗?

    这篇文章主要介绍了node.js适合游戏后台开发吗?node.js是不是能代替C++开发游戏后台呢?看完本文我想你会有一定的了解了,需要的朋友可以参考下
    2014-09-09
  • node.js 中的require用法和import的区别解析

    node.js 中的require用法和import的区别解析

    在Node.js中,require是一个内置的函数,用于在当前模块中加载和缓存其他模块,这篇文章给大家介绍node.js 中的require用法和import的区别,感兴趣的朋友跟随小编一起看看吧
    2024-04-04
  • node.js操作mysql(增删改查)

    node.js操作mysql(增删改查)

    本文给大家分享的是使用node.js实现对mysql数据库的增删改查操作,有需要的小伙伴可以参考下,希望对大家学习node有所帮助。
    2015-07-07
  • windows系统下安装yarn的详细教程

    windows系统下安装yarn的详细教程

    yarn是一个新的JS包管理工具,它的出现是为了弥补npm的一些缺陷,下面这篇文章主要给大家介绍了关于windows系统下安装yarn的详细教程,文中通过图文介绍的非常详细,需要的朋友可以参考下
    2023-02-02
  • nodejs递归文件夹获取所有文件路径实例

    nodejs递归文件夹获取所有文件路径实例

    这篇文章主要为大家介绍了nodejs递归文件夹获取所有文件路径实例,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-09-09
  • Node.js安装教程和NPM包管理器使用详解

    Node.js安装教程和NPM包管理器使用详解

    这篇文章主要介绍了Node.js安装教程和NPM包管理器使用详解,安装部分讲解了Windows、和MAC OS下的安装图解,并介绍了Linux下的源码安装方法,最后对NPM包管理器做了详细介绍,需要的朋友可以参考下
    2014-08-08
  • node异步使用await和不用await的区别实例分析

    node异步使用await和不用await的区别实例分析

    这篇文章主要介绍了node异步使用await和不用await的区别,结合实例形式分析了node.js异步使用await和不用await的实例中,同步与异步执行的区别,需要的朋友可以参考下
    2023-06-06
  • 轻松创建nodejs服务器(2):nodejs服务器的构成分析

    轻松创建nodejs服务器(2):nodejs服务器的构成分析

    这篇文章主要介绍了轻松创建nodejs服务器(2):nodejs服务器的构成分析,本文是对第一节中简单服务器的代码进行分析总结,需要的朋友可以参考下
    2014-12-12
  • npm使用淘宝镜像及切换回官方源的操作命令

    npm使用淘宝镜像及切换回官方源的操作命令

    这篇文章主要给大家介绍了npm使用淘宝镜像及切换回官方源的操作命令,文中给大家介绍的非常详细,对大家的学习或工作有一定的帮助,需要的朋友可以参考下
    2024-02-02

最新评论