使用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中eval函数的使用示例
Jul 21 Javascript
Js放到HTML文件中的哪个位置有什么区别
Aug 21 Javascript
js控制不同的时间段显示不同的css样式的实例代码
Nov 04 Javascript
基于jQuery实现多层次的手风琴效果附源码
Sep 21 Javascript
JS工作中的小贴士之”闭包“与事件委托的”阻止冒泡“
Jun 16 Javascript
Bootstrap下拉菜单Dropdowns的实现代码
Mar 17 Javascript
浅谈vue中慎用style的scoped属性
Nov 28 Javascript
用jquery获取select标签中选中的option值及文本的示例
Jan 25 jQuery
JS实现导航栏楼层特效
Jan 01 Javascript
使用js实现单链解决前端队列问题的方法
Feb 03 Javascript
Vue实现仿iPhone悬浮球的示例代码
Mar 13 Javascript
Vue+Element UI实现概要小弹窗的全过程
May 30 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
destoon实现调用图文新闻的方法
2014/08/21 PHP
php使用ZipArchive提示Fatal error: Class ZipArchive not found in的解决方法
2014/11/04 PHP
Ajax+PHP实现的模拟进度条功能示例
2019/02/11 PHP
jQuery select的操作实现代码
2009/05/06 Javascript
JQuery 获得绝对,相对位置的坐标方法
2010/02/09 Javascript
jQuery中创建实例与原型继承揭秘
2011/12/21 Javascript
js 操作select和option常用代码整理
2012/12/13 Javascript
网页右侧悬浮滚动在线qq客服代码示例
2014/04/28 Javascript
JavaScript中的console.profile()函数详细介绍
2014/12/29 Javascript
JavaScript合并两个数组并去除重复项的方法
2015/06/13 Javascript
Nodejs学习item【入门手上】
2016/05/05 NodeJs
BootStrap Typeahead自动补全插件实例代码
2016/08/10 Javascript
将form表单通过ajax实现无刷新提交的简单实例
2016/10/12 Javascript
详解Vue微信公众号开发踩坑全记录
2017/08/21 Javascript
vue点击input弹出带搜索键盘并监听该元素的方法
2018/08/25 Javascript
在Vue中使用Viser说明(基于AntV-G2可视化引擎)
2020/10/28 Javascript
[00:28]DOTA2北京网鱼队选拔赛
2015/04/08 DOTA
python访问纯真IP数据库的代码
2011/05/19 Python
python中的sort方法使用详解
2014/07/25 Python
Python实现对PPT文件进行截图操作的方法
2015/04/28 Python
菜鸟使用python实现正则检测密码合法性
2016/01/05 Python
Python实现桶排序与快速排序算法结合应用示例
2017/11/22 Python
Linux-ubuntu16.04 Python3.5配置OpenCV3.2的方法
2018/04/02 Python
详解python里的命名规范
2018/07/16 Python
python 实现多线程下载视频的代码
2019/11/15 Python
Python numpy.zero() 初始化矩阵实例
2019/11/27 Python
python使用docx模块读写docx文件的方法与docx模块常用方法详解
2020/02/17 Python
使用Django实现把两个模型类的数据聚合在一起
2020/03/28 Python
Python HTMLTestRunner测试报告view按钮失效解决方案
2020/05/25 Python
python3爬虫中异步协程的用法
2020/07/10 Python
python Timer 类使用介绍
2020/12/28 Python
岗位安全生产责任书
2014/07/28 职场文书
售票员岗位职责
2015/02/15 职场文书
2016年大学生党员公开承诺书
2016/03/24 职场文书
React四级菜单的实现
2022/04/08 Javascript
python热力图实现的完整实例
2022/06/25 Python