使用express来代理服务的方法


Posted in Javascript onJune 21, 2019

nodejs和nginx都可以反向代理,解决跨域问题。

本地服务

const express = require('express')
const app = express()

//如果它在最前面,后面的/开头的都会被拦截
app.get('/', (req, res) => res.send('Hello World!'))

app.use(express.static('public'));//静态资源
app.use('/dist', express.static(path.join(__dirname, 'public')));//静态资源

//404
app.use('/test', function (req, res, next) {
  res.status(404).send("Sorry can't find that!");
});

app.use(function (req, res, next) {
  //TODO 中间件,每个请求都会经过
  next();
});

app.use(function (err, req, res, next) {
  //TODO 失败中间件,请求错误后都会经过
  console.error(err.stack);
  res.status(500).send('Something broke!');
  next();
});

app.listen(4000, () => console.log('Example app listening on port 4000!'))

与request配合使用

这样就将其它服务器的请求代理过来了

const request = require('request');
app.use('/base/', function (req, res) {
  let url = 'http://localhost:3000/base' + req.url;
  req.pipe(request(url)).pipe(res);
});

使用http-proxy-middleware

const http_proxy = require('http-proxy-middleware');
const proxy = {
 '/tarsier-dcv/': {
  target: 'http://192.168.1.190:1661'
 },
 '/base/': {
  target: 'http://localhost:8088',
  pathRewrite: {'^/base': '/debug/base'}
 }
};

for (let key in proxy) {
 app.use(key, http_proxy(proxy[key]));
}

监听本地文件变化

使用nodemon插件。

--watch test指监听根目录下test文件夹的所有文件,有变化就会重启服务。

"scripts": {
 "server": "nodemon --watch build --watch test src/server.js"
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
javascript读取xml
Nov 04 Javascript
效率高的Javscript字符串替换函数的benchmark
Aug 02 Javascript
jQuery EasyUI API 中文文档 - PropertyGrid属性表格
Nov 18 Javascript
JS操作Cookie写入和读取实例代码
Oct 20 Javascript
javascript校验价格合法性实例(必须输入2位小数)
May 05 Javascript
js判断浏览器是否支持html5
Aug 17 Javascript
javascript中setInterval的用法
Jul 19 Javascript
基于jQuery对象和DOM对象和字符串之间的转化实例
Aug 08 jQuery
JS实现简单的浮动碰撞效果示例
Dec 28 Javascript
JS 验证码功能的三种实现方式
Nov 26 Javascript
node获取客户端ip功能简单示例
Aug 24 Javascript
JavaScript实现消消乐的源代码
Jan 12 Javascript
react+redux仿微信聊天界面
Jun 21 #Javascript
基于jQuery的时间戳与日期间的转化
Jun 21 #jQuery
jQuery事件委托代码实践详解
Jun 21 #jQuery
Vue.js中的extend绑定节点并显示的方法
Jun 20 #Javascript
微信小程序动态显示项目倒计时
Jun 20 #Javascript
微信小程序实现日期格式化和倒计时
Nov 01 #Javascript
微信小程序实现商城倒计时
Nov 01 #Javascript
You might like
PHP中Memcache操作类及用法实例
2014/12/12 PHP
php通过array_shift()函数移除数组第一个元素的方法
2015/03/18 PHP
开启PHP的伪静态模式
2015/12/31 PHP
php+mongodb判断坐标是否在指定多边形区域内的实例
2016/10/28 PHP
使用PHPWord生成word文档的方法详解
2019/06/06 PHP
php解决约瑟夫环算法实例分析
2019/09/30 PHP
firefox下jQuery UI Autocomplete 1.8.*中文输入修正方法
2012/09/19 Javascript
Underscore.js 的模板功能介绍与应用
2012/12/24 Javascript
深入理解Javascript动态方法调用与参数修改的问题
2013/12/10 Javascript
jQuery scroll事件实现监控滚动条分页示例
2014/04/04 Javascript
node.js中的http.response.setHeader方法使用说明
2014/12/14 Javascript
javascript获取元素离文档各边距离的方法
2015/02/13 Javascript
jquery+ajax请求且带返回值的代码
2015/08/12 Javascript
详解javascript的变量与标识符
2016/01/04 Javascript
javascript实现随机生成DIV背景色
2016/06/20 Javascript
input输入框内容实时监测(附代码)
2017/08/15 Javascript
react.js 父子组件数据绑定实时通讯的示例代码
2017/09/25 Javascript
vue封装第三方插件并发布到npm的方法
2017/09/25 Javascript
AngularJS select加载数据选中默认值的方法
2018/02/28 Javascript
JS实现DOM节点插入操作之子节点与兄弟节点插入操作示例
2018/07/30 Javascript
vue组件之间通信方式实例总结【8种方式】
2019/02/22 Javascript
使用webpack构建应用的方法步骤
2019/03/04 Javascript
uni-app之APP和小程序微信授权方法
2019/05/09 Javascript
Vue基于iview实现登录密码的显示与隐藏功能
2020/03/06 Javascript
python学习之编写查询ip程序
2016/02/27 Python
python安装与使用redis的方法
2016/04/19 Python
python编辑用户登入界面的实现代码
2018/07/16 Python
梅尔倒谱系数(MFCC)实现
2019/06/19 Python
在pytorch 中计算精度、回归率、F1 score等指标的实例
2020/01/18 Python
外贸英语专业求职信范文
2013/12/25 职场文书
竞选学委演讲稿
2014/09/13 职场文书
反四风对照检查材料
2014/09/22 职场文书
单位计划生育责任书
2015/05/09 职场文书
运动会宣传语
2015/07/13 职场文书
情感电台广播稿
2015/08/18 职场文书
ajax请求前端跨域问题原因及解决方案
2021/10/16 Javascript