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


Posted in Javascript onFebruary 10, 2020

本文实例讲述了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程序设计有所帮助。

Javascript 相关文章推荐
js 页面传参数时 参数值含特殊字符的问题
Dec 13 Javascript
javascript开发中因空格引发的错误
Nov 08 Javascript
Jquery中显示隐藏的实现代码分析
Jul 26 Javascript
Jquery index()方法 获取相应元素索引值
Oct 12 Javascript
javascript实现简易计算器的代码
May 31 Javascript
jQuery实现动态文字搜索功能
Jan 05 Javascript
jQuery模拟淘宝购物车功能
Feb 27 Javascript
分享ES6的7个实用技巧
Jan 18 Javascript
JS代码触发事件代码实例
Jan 02 Javascript
使用typescript改造koa开发框架的实现
Feb 04 Javascript
viewer.js实现图片预览功能
Jun 24 Javascript
Element Card 卡片的具体使用
Jul 26 Javascript
node.js中 redis 的安装和基本操作示例
Feb 10 #Javascript
js实现登录拖拽窗口
Feb 10 #Javascript
javascript 原型与原型链的理解及应用实例分析
Feb 10 #Javascript
在 Vue 中使用 JSX 及使用它的原因浅析
Feb 10 #Javascript
node.js使用http模块创建服务器和客户端完整示例
Feb 10 #Javascript
webpack打包优化的几个方法总结
Feb 10 #Javascript
JS+HTML5本地存储Localstorage实现注册登录及验证功能示例
Feb 10 #Javascript
You might like
php下将多个数组合并成一个数组的方法与实例代码
2011/02/03 PHP
PHP表单数据写入MySQL数据库的代码
2016/05/31 PHP
kindeditor 加入七牛云上传的实例讲解
2017/11/12 PHP
PHP基于imagick扩展实现合成图片的两种方法【附imagick扩展下载】
2017/11/14 PHP
免费空间广告万能消除代码
2006/09/04 Javascript
jquery命令汇总,方便使用jquery的朋友
2012/06/26 Javascript
原始XMLHttpRequest方法详情回顾
2013/11/28 Javascript
解决jquery插件冲突的问题
2014/01/23 Javascript
浅谈JavaScript 的执行顺序
2015/08/07 Javascript
超实用的JavaScript表单代码段
2016/02/26 Javascript
Node.js中JavaScript操作MySQL的常用方法整理
2016/03/01 Javascript
jquery.validate[.unobtrusive]和Bootstrap实现tooltip错误提示问题分析
2016/10/30 Javascript
关于Layui Table隐藏列问题
2019/09/16 Javascript
在微信小程序中渲染HTML内容3种解决方案及分析与问题解决
2020/01/12 Javascript
Vue过滤器,生命周期函数和vue-resource简单介绍
2021/01/12 Vue.js
Python中关于使用模块的基础知识
2015/05/24 Python
浅析Python中signal包的使用
2015/11/13 Python
一张图带我们入门Python基础教程
2017/02/05 Python
python移位运算的实现
2019/07/15 Python
Python3常见函数range()用法详解
2019/12/30 Python
Python hashlib常见摘要算法详解
2020/01/13 Python
基于Python实现简单学生管理系统
2020/07/24 Python
python 实现学生信息管理系统的示例
2020/11/28 Python
HTML5新特性之type=file文件上传功能
2018/02/02 HTML / CSS
印度在线购买电子产品网站:Croma
2020/01/02 全球购物
党员干部承诺书范文
2014/03/25 职场文书
四下基层实施方案
2014/03/28 职场文书
教师个人自我评价范文
2014/04/13 职场文书
关于群众路线的心得体会
2014/11/05 职场文书
财务审计整改报告
2014/11/06 职场文书
2014年青年志愿者工作总结
2014/12/09 职场文书
公务员年度考核个人总结
2015/02/12 职场文书
建议书的格式及范文
2015/09/14 职场文书
2016继续教育研修日志
2015/11/13 职场文书
教师培训学习心得体会
2016/01/21 职场文书
Nginx配置文件详解以及优化建议指南
2021/09/15 Servers