使用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实现仿Windows关机效果
Mar 10 Javascript
jquery的flexigrid无法显示数据提示获取到数据
Jul 19 Javascript
Javascript 函数parseInt()转换时出现bug问题
May 20 Javascript
IE及IE6浏览器中判断JS文件加载成功失败的方法
Feb 18 Javascript
jQuery插件EnPlaceholder实现输入框提示文字
Jun 05 Javascript
jquery实现从数组移除指定的值
Jun 24 Javascript
跟我学习javascript的Date对象
Nov 19 Javascript
jQuery ajax分页插件实例代码
Jan 27 Javascript
javascript验证内容为数字以及长度为10的简单实例
Aug 20 Javascript
快速了解vue-cli 3.0 新特性
Feb 28 Javascript
微信网页授权并获取用户信息的方法
Jul 30 Javascript
vue-router beforeEach跳转路由验证用户登录状态
Dec 26 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
Zend Framework教程之连接数据库并执行增删查的方法(附demo源码下载)
2016/03/21 PHP
Laravle eloquent 多对多模型关联实例详解
2017/11/22 PHP
漂亮的thinkphp 跳转页封装示例
2019/10/16 PHP
javascript判断单选框或复选框是否选中方法集锦
2007/04/04 Javascript
jQuery 打造动态渐变按钮 详细图文教程
2010/04/25 Javascript
关于window.pageYOffset和document.documentElement.scrollTop
2011/04/05 Javascript
Firefox和IE兼容性问题及解决方法总结
2013/10/08 Javascript
jquery如何实现锚点链接之间的平滑滚动
2013/12/02 Javascript
jQuery取得select选择的文本与值的示例
2013/12/09 Javascript
jquery-tips悬浮提示插件分享
2015/07/31 Javascript
javascript实现3D变换的立体圆圈实例
2015/08/06 Javascript
[原创]JQuery 在表单提交之前修改 提交的值
2016/04/14 Javascript
webpack常用配置项配置文件介绍
2016/11/07 Javascript
详解node-ccap模块生成captcha验证码
2017/07/01 Javascript
Vue2路由动画效果的实现代码
2017/07/10 Javascript
Javascript之图片的延迟加载的实例详解
2017/07/24 Javascript
Vue动态组件实例解析
2017/08/20 Javascript
3种vue组件的书写形式
2017/11/29 Javascript
js实现同一个页面,多个enter事件绑定的示例
2018/10/10 Javascript
Vue中遍历数组的新方法实例详解
2019/07/21 Javascript
关于ckeditor在bootstrap中modal中弹框无法输入的解决方法
2019/09/11 Javascript
[57:59]完美世界DOTA2联赛循环赛 Ink Ice vs LBZS BO2第一场 11.05
2020/11/05 DOTA
浅析python中SQLAlchemy排序的一个坑
2017/02/24 Python
CentOS7.3编译安装Python3.6.2的方法
2018/01/22 Python
pandas删除指定行详解
2019/04/04 Python
VICHY薇姿英国官网:全球专业敏感肌护肤领先品牌
2017/07/04 全球购物
使用C#编写创建一个线程的代码
2013/01/22 面试题
个人自荐信
2013/12/05 职场文书
护士毕业生自荐信
2014/02/07 职场文书
公证委托书标准格式
2014/09/11 职场文书
高考升学宴答谢词
2015/01/20 职场文书
综合办公室主任岗位职责
2015/04/01 职场文书
详解Flask开发技巧之异常处理
2021/06/15 Python
python ConfigParser库的使用及遇到的坑
2022/02/12 Python
Python语言内置数据类型
2022/02/24 Python
python超详细实现完整学生成绩管理系统
2022/03/17 Python