使用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 相关文章推荐
自己的js工具_Form 封装
Aug 21 Javascript
简单几行JS Code实现IE邮件转发新浪微博
Jul 03 Javascript
jQuery的选择器中的通配符[id^='code']或[name^='code']及jquery选择器总结
Dec 24 Javascript
利用jQuery设计一个简单的web音乐播放器的实例分享
Mar 08 Javascript
jQuery ztree实现动态树形多选菜单
Aug 12 Javascript
JavaScript实现时钟滴答声效果
Jan 29 Javascript
微信小程序 常用工具类详解及实例
Feb 15 Javascript
详解Angular2中Input和Output用法及示例
May 21 Javascript
Vue导出json数据到Excel电子表格的示例
Dec 04 Javascript
详解vuex commit保存数据技巧
Dec 25 Javascript
node.js中事件触发器events的使用方法实例分析
Nov 23 Javascript
JavaScript实现像雪花一样的Hexaflake分形
Jul 07 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
一个简单的自动发送邮件系统(三)
2006/10/09 PHP
使用swoole扩展php websocket示例
2014/02/13 PHP
在CentOS系统上从零开始搭建WordPress博客的全流程记录
2016/04/21 PHP
微信公众号开发之通过接口删除菜单
2017/02/20 PHP
PHP微信PC二维码登陆的实现思路
2017/07/13 PHP
PHP用函数嵌入网站访问量计数器
2017/10/27 PHP
PHP队列场景以及实现代码实例详解
2021/02/26 PHP
jQuery实现仿腾讯迷你首页选项卡效果代码
2015/09/17 Javascript
基于JS判断iframe是否加载成功的方法(多种浏览器)
2016/05/13 Javascript
javascript代码调试之console.log 用法图文详解
2016/09/30 Javascript
用Angular实时获取本地Localstorage数据,实现一个模拟后台数据登入的效果
2016/11/09 Javascript
最常用的jQuery表单验证(简单)
2017/05/23 jQuery
JavaScript数据结构与算法之队列原理与用法实例详解
2017/11/22 Javascript
详解vue+axios给开发环境和生产环境配置不同的接口地址
2019/08/16 Javascript
vue路由 遍历生成复数router-link的例子
2019/10/30 Javascript
element日历calendar组件上月、今天、下月、日历块点击事件及模板源码
2020/07/27 Javascript
[01:14]辉夜杯战队访谈宣传片—NEWBEE.Y
2015/12/26 DOTA
Python爬虫之UserAgent的使用实例
2019/02/21 Python
手把手教你使用Python创建微信机器人
2019/04/29 Python
python列表,字典,元组简单用法示例
2019/07/11 Python
django如何自己创建一个中间件
2019/07/24 Python
在Keras中实现保存和加载权重及模型结构
2020/06/15 Python
OpenCV 使用imread()函数读取图片的六种正确姿势
2020/07/09 Python
澳大利亚便宜隐形眼镜购买网站:QUICKLENS Australia
2018/10/06 全球购物
美国演唱会和体育门票购买网站:Ticketnetwork
2018/10/19 全球购物
网络、C以及其他硬件方面的面试题
2016/08/23 面试题
将一个数的从第5位开始的7个数取出,其余位置0
2016/05/26 面试题
大专计算机个人求职的自我评价
2013/10/21 职场文书
高中毕业生自我鉴定
2013/11/03 职场文书
企业内控岗位的职责
2014/02/07 职场文书
网络编辑职责
2014/03/01 职场文书
工程部岗位职责
2015/02/10 职场文书
伊索寓言读书笔记
2015/06/30 职场文书
优秀志愿者感言
2015/08/01 职场文书
2016年学校安全教育月活动总结
2016/04/06 职场文书
Java实现贪吃蛇游戏的示例代码
2022/09/23 Java/Android