使用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 相关文章推荐
解决extjs在firefox中关闭窗口再打开后iframe中js函数访问不到的问题
Nov 06 Javascript
select标签模拟/美化方法采用JS外挂式插件
Apr 01 Javascript
jQuery hover事件简单实现同时绑定2个方法
Jun 07 Javascript
巧用Vue.js+Vuex制作专门收藏微信公众号的app
Nov 03 Javascript
详解如何让InstantClick兼容MathJax、百度统计等
Sep 12 Javascript
微信小程序使用gitee进行版本管理
Sep 20 Javascript
实例讲解v-if和v-show的区别
Jan 31 Javascript
详解在React-Native中持久化redux数据
May 22 Javascript
vue实现全屏滚动效果(非fullpage.js)
Mar 07 Javascript
redux处理异步action解决方案
Mar 22 Javascript
javascript 代码是如何被压缩的示例代码
May 06 Javascript
vue+echarts实现多条折线图
Mar 21 Vue.js
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采集速度探究总结(原创)
2008/04/18 PHP
九个你必须知道而且又很好用的php函数和特点
2013/08/08 PHP
php调用C代码的实现方法
2014/03/11 PHP
深入浅析用PHP实现MVC
2016/03/02 PHP
详解PHP5.6.30与Apache2.4.x配置
2017/06/02 PHP
浅析PHP反序列化中过滤函数使用不当导致的对象注入问题
2020/02/15 PHP
jQuery中文入门指南,翻译加实例,jQuery的起点教程
2007/01/13 Javascript
jQuery 改变CSS样式基础代码
2010/02/11 Javascript
获取客户端网卡MAC地址和IP地址实现JS代码
2013/03/17 Javascript
判断javascript的数据类型(示例代码)
2013/12/11 Javascript
关于jQuery中的each方法(jQuery到底干了什么)
2014/03/05 Javascript
原生js实现淘宝首页点击按钮缓慢回到顶部效果
2014/04/06 Javascript
一个简单的jquery的多选下拉框(自写)
2014/05/05 Javascript
JavaScript获取网页中第一个链接ID的方法
2015/04/03 Javascript
微信小程序 列表的上拉加载和下拉刷新的实现
2017/04/01 Javascript
从零开始学习Node.js系列教程三:图片上传和显示方法示例
2017/04/13 Javascript
说说AngularJS中的$parse和$eval的用法
2017/09/14 Javascript
详解vue中axios的封装
2018/07/18 Javascript
vue实现条件判断动态绑定样式的方法
2018/09/29 Javascript
微信小程序wepy框架学习和使用心得详解
2019/05/24 Javascript
Vue实现导航栏的显示开关控制
2019/11/01 Javascript
ES2020系列之空值合并运算符 '??'
2020/07/22 Javascript
解决vuecli3中img src 的引入问题
2020/08/04 Javascript
原生js实现放大镜组件
2021/01/22 Javascript
浅谈python3.x pool.map()方法的实质
2019/01/16 Python
python运用sklearn实现KNN分类算法
2019/10/16 Python
Python正则表达式急速入门(小结)
2019/12/16 Python
pytorch中交叉熵损失(nn.CrossEntropyLoss())的计算过程详解
2020/01/02 Python
删除pycharm鼠标右键快捷键打开项目的操作
2021/01/16 Python
全球性的奢侈品梦工厂:Forzieri(福喜利)
2019/02/20 全球购物
俄罗斯首家面向中国消费者的一站式购物网站:Wruru
2020/05/08 全球购物
护理专业学生职业生涯规划范文
2014/03/11 职场文书
小学综合实践活动总结
2014/07/07 职场文书
给女朋友道歉的话大全
2015/01/20 职场文书
pytorch 实现变分自动编码器的操作
2021/05/24 Python
如何使用 resize 实现图片切换预览功能
2021/08/23 HTML / CSS