http-proxy-middleware
概述
这是设置代理的神器,webpack的devServer.proxy就是使用了非常强大的 http-proxy-middleware 包。Node.js代理很简单。 轻松配置代理中间件进行连接,发布,浏览器同步等等。
代理 /api 向 http://www.example.org请求
var express = require('express');
var proxy = require('http-proxy-middleware');
var app = express();
app.use('/api', proxy({target: 'http://www.example.org', changeOrigin: true}));
app.listen(3000);
// http://localhost:3000/api/foo/bar -> http://www.example.org/api/foo/bar
注意:需设置changeOrigin = ture
安装
$ npm install --save-dev http-proxy-middleware
核心概念
var proxy = require('http-proxy-middleware');
var apiProxy = proxy('/api', {target: 'http://www.example.org'});
// \____/ \_____________________________/
// | |
// context options
// 'apiProxy' is now ready to be used as middleware in a server.
context: 定义哪些请求要被目标主机代理
options.target:目标主机 (协议+主机名)
也可以使用简写配置
proxy('http://www.example.org:8000/api');
等价于 proxy('/api', {target: 'http://www.example.org:8000'});
context匹配规则
提供另一种方法来决定应该代理哪些请求; 如果无法使用服务器的路径参数来设置代理,那么就需要更多的灵活性。
- 匹配路径
proxy({...}) - 匹配所有路径,所有请求都被代理.
proxy('/', {...}) - 匹配所有路径,所有请求都被代理.
proxy('/api', {...}) - 匹配路径 /api
- 多个路径匹配
proxy(['/api', '/ajax', '/someotherpath'], {...}) - context是个数组,匹配 /api, /ajax, /someotherpath 路径
- 通配符路径匹配
注,一个星''只能匹配当前层级的任意字符,匹配任意的多级路径则需用两个:'*'
可以访问 micromatch 或者 glob 查看更多通配符的例子
proxy('**', {...}) 匹配所有路径,所有请求都被代理.
proxy('*/.html', {...}) 匹配所有以 .html 为结尾的路径
proxy('/*.html', {...}) 匹配以 .html 结尾的绝对路径
proxy('/api/*/.html', {...}) 匹配在 /api 路径下的,且以 .html 结尾的路径
proxy(['/api/', '/ajax/'], {...}) combine multiple patterns
proxy(['/api/', '!/bad.json'], {...}) exclusion
选项(options)
option.pathRewrite: 重写目标的url路径,key用正则表达式来匹配路径
注,路径太长时,可以用这个选项设置,方便后期调用接口
// 重写路径
pathRewrite: {'^/old/api' : '/new/api'}
// 移除路径
pathRewrite: {'^/remove/api' : ''}
// 添加基础路径
pathRewrite: {'^/' : '/basepath/'}
// 路径自定义
pathRewrite: function (path, req) { return path.replace('/api', '/base/api') }
暂时用到这么多,更多选项查看https://github.com/chimurai/h...
来源:https://segmentfault.com/a/1190000016075134
http-proxy-middleware的更多相关文章
- Node.js Web 开发框架大全《中间件篇》
这篇文章与大家分享优秀的 Node.js 中间件模块.Node 是一个服务器端 JavaScript 解释器,它将改变服务器应该如何工作的概念.它的目标是帮助程序员构建高度可伸缩的应用程序,编写能够处 ...
- 实例PK(Vue服务端渲染 VS Vue浏览器端渲染)
Vue 2.0 开始支持服务端渲染的功能,所以本文章也是基于vue 2.0以上版本.网上对于服务端渲染的资料还是比较少,最经典的莫过于Vue作者尤雨溪大神的 vue-hacker-news.本人在公司 ...
- Vue服务端渲染和Vue浏览器端渲染的性能对比
Vue 2.0 开始支持服务端渲染的功能,所以本文章也是基于vue 2.0以上版本.网上对于服务端渲染的资料还是比较少,最经典的莫过于Vue作者尤雨溪大神的 vue-hacker-news.本人在公司 ...
- browser-sync + http-proxy-middleware 配置代理跨域
写代理js文件下面是文件内容 /** * Module dependencies. */ var browserSync = require('browser-sync').create() var ...
- npm模块之http-proxy-middleware使用教程(译)
单线程node.js代理中间件,用于连接,快速和浏览器同步 Node.js代理简单. 轻松配置代理中间件连接,快速,浏览器同步等. 由流行的Nodejitsu http代理提供. TL;DR 代理/ ...
- React第一篇: 搭建React + nodejs + express框架
前提: 需要安装Node.js (>6)版本 1.cmd进到本地某个目录, 逐行输入以下指令(以下括号为注释) npm install -g create-react-app (全局安装cr ...
- 7:django 中间件
中间件 中间件是一个连接django请求/相应处理的框架,是一个轻量级的低层次的全局影响django输入输出的系统插件. 每一个中间件组件负责一些特定的功能,这里我们我们只看一下如何激活使用系统自带的 ...
- 爬虫、网页测试 及 java servlet 测试框架等介绍
scrapy 抓取网页并存入 mongodb的完整示例: https://github.com/rmax/scrapy-redis https://github.com/geekan/scrapy-e ...
- Vue服务端渲染 VS Vue浏览器端渲染)
Vue 2.0 开始支持服务端渲染的功能,所以本文章也是基于vue 2.0以上版本.网上对于服务端渲染的资料还是比较少,最经典的莫过于Vue作者尤雨溪大神的 vue-hacker-news.本人在公司 ...
- Express 框架以及与http-proxy-middleware整合实现代理
1.Express的简单使用 1.简介 Express 是一个简洁而灵活的 node.js Web应用框架, 提供了一系列强大特性帮助你创建各种 Web 应用,和丰富的 HTTP 工具. 使用 Exp ...
随机推荐
- Lucene实践:全文检索的基本原理
一.总论 根据http://lucene.apache.org/java/docs/index.html 定义: "Apache Lucene(TM) is a high-performan ...
- 【POJ2992】Divisors
[题目概括] 计算\(C_n^k\)的因子个数. [思路要点] 首先考虑将组合数展开,展开后就是\(\frac {n!}{k!\times (n-k)!}\). 这样就是计算出这些质因子的个数,然后将 ...
- JMS学习四(ActiveMQ消息过滤)
一.消息的选择器 不管是在消息发送端设置消息过期时间还是在接收端设置等待时间,都是对不满足的消息有过滤的作用,那消息选择器就是为过滤消息而生的下面来看看消息选择器: ActiveMQ提供了一种机制,使 ...
- easyui 功能栏onclick传递object参数
{ field: 'Delete', title: '操作', width: 60, formatter: function (value, row, index) { var jrow = []; ...
- Oracle数据库表空间创建、添加用户并授权
--创建test表空间CREATE TABLESPACE test_data LOGGING DATAFILE '/u01/app/oracle/oradata/test/test_data.dbf' ...
- sqli-labs(24)
0x1 前言 SQL注入一般分为两类:一阶SQL注入(普通SQL注入),二阶SQL注入 .二次注入不是注入两次的意思,请不要混淆 0x2 什么是二阶注入 二阶注入是指客通过构造数据的形式,在浏览器或者 ...
- 白鹭http请求post
示例demo: //new http请求 var request = new egret.HttpRequest(); //请求参数 var params = "p1=postP1& ...
- 不知道Java类文件结构的同学,看这篇文章就够了
一.前言 代码编译的结果从本地机器码转变为字节码,是存储格式发展的一小步,却是编程语言发展的一大步.经过多年的发展,目前的计算机仍然只能识别0和1,但是由于近10年内虚拟机以及大量建立在虚拟机之上的程 ...
- CentOS 6.7与CentOS 7.3内存查看命令free、top的差异对比
https://www.centos.bz/2017/08/centos-6-7-centos-7-3-free-top/
- zabbix 内网监控云服务器
今天 搞监控碰到了一个问题就是.内网机器搭建的zabbix服务器去监控云服务器agent的时候,agent 需要写服务端的IP地址. 我的思路是内网服务器映射自己公网IP地址的zabbix的端口100 ...