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 相关文章推荐
javascript第一课
Feb 27 Javascript
jquery插件制作教程 txtHover
Aug 17 Javascript
js读取注册表的键值示例
Sep 25 Javascript
javascript强制点击广告的方法
Feb 06 Javascript
js兼容火狐显示上传图片预览效果的方法
May 21 Javascript
微信小程序开发之实现选项卡(窗口顶部TabBar)页面切换
Nov 25 Javascript
Node.js的Mongodb使用实例
Dec 30 Javascript
jQuery使用JSONP实现跨域获取数据的三种方法详解
May 04 jQuery
BootStrap模态框和select2合用时input无法获取焦点的解决方法
Sep 01 Javascript
总结js中的一些兼容性易错的问题
Dec 18 Javascript
JQuery搜索框自动补全(模糊匹配)功能实现示例
Jan 08 jQuery
Jquery获取radio选中值实例总结
Jan 17 jQuery
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教程孙仲岳主讲
2008/01/07 PHP
php 破解防盗链图片函数
2008/12/09 PHP
PHP+Mysql+jQuery实现动态展示信息
2011/10/08 PHP
PHP的拦截器实例分析
2014/11/03 PHP
PHP实现将几张照片拼接到一起的合成图片功能【便于整体打印输出】
2017/11/14 PHP
javascript与webservice的通信实现代码
2010/12/25 Javascript
jQuery EasyUI API 中文文档 - Tree树使用介绍
2011/11/19 Javascript
JQuery的AJAX实现文件下载的小例子
2013/05/15 Javascript
nodejs教程之制作一个简单的文章发布系统
2014/11/21 NodeJs
js实现点击向下展开的下拉菜单效果代码
2015/09/01 Javascript
JavaScript函数的一些注意要点小结及js匿名函数
2015/11/10 Javascript
JavaScript与ActionScript3两者的同性与差异性
2016/09/22 Javascript
如何利用JQuery实现从底部回到顶部的功能
2016/12/27 Javascript
从零学习node.js之利用express搭建简易论坛(七)
2017/02/25 Javascript
jQuery动态移除与增加onclick属性的方法详解
2018/06/07 jQuery
Vue CLI3搭建的项目中路径相关问题的解决
2018/09/17 Javascript
Vue.js@2.6.10更新内置错误处机制Fundebug同步支持相应错误监控
2019/05/13 Javascript
JavaScript实现省市联动效果
2019/11/22 Javascript
vue通过接口直接下载java生成好的Excel表格案例
2020/10/26 Javascript
Python中解析JSON并同时进行自定义编码处理实例
2015/02/08 Python
Python连接DB2数据库
2016/08/27 Python
Python3.5实现的三级菜单功能示例
2019/03/25 Python
使用OpCode绕过Python沙箱的方法详解
2019/09/03 Python
pytorch使用 to 进行类型转换方式
2020/01/08 Python
不到20行实现Python代码即可制作精美证件照
2020/04/24 Python
python正则表达式 匹配反斜杠的操作方法
2020/08/07 Python
安全生产检讨书
2014/01/21 职场文书
消防先进事迹材料
2014/02/10 职场文书
品质主管岗位职责
2014/03/16 职场文书
政府门卫岗位职责
2014/04/29 职场文书
承诺书格式范文
2014/06/03 职场文书
2015年检验员工作总结范文
2015/04/30 职场文书
投诉信回复范文
2015/07/03 职场文书
人为什么会“幸灾乐祸”?
2019/08/06 职场文书
成本低的5个创业项目:投资小、赚钱快
2019/08/20 职场文书
Nginx文件已经存在全局反向代理问题排查记录
2022/07/15 Servers