使用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面向对象 多种创建对象方法小结
May 21 Javascript
js保留两位小数使用toFixed实现
Jul 29 Javascript
利用AJAX实现WordPress中的文章列表及评论的分页功能
May 17 Javascript
Express + Session 实现登录验证功能
Sep 08 Javascript
微信小程序实现滚动消息通知
Feb 02 Javascript
Angular4 反向代理Details实践
May 30 Javascript
js实现左右两侧浮动广告
Jul 09 Javascript
微信小程序之自定义组件的实现代码(附源码)
Aug 02 Javascript
简化版的vue-router实现思路详解
Oct 19 Javascript
小程序使用watch监听数据变化的方法详解
Sep 20 Javascript
js实现文字头像的生成代码
Mar 07 Javascript
解决vue自定义组件@click点击失效问题
Apr 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
Zend的AutoLoad机制介绍
2012/09/27 PHP
Laravel相关的一些故障解决
2020/08/19 PHP
jQuery 入门级学习笔记及源码
2010/01/22 Javascript
jquery 插件学习(六)
2012/08/06 Javascript
JavaScript中的常见问题解决方法(乱码,IE缓存,代理)
2013/11/28 Javascript
Node.js中对通用模块的封装方法
2014/06/06 Javascript
JavaScript window.location对象
2014/11/14 Javascript
谈谈我对JavaScript DOM事件的理解
2015/12/18 Javascript
javascript轮播图算法
2016/10/21 Javascript
node.js程序作为服务并在windows下开机自启动(用forever)
2017/03/29 Javascript
JS使用tofixed与round处理数据四舍五入的区别
2017/10/25 Javascript
JavaScript中Require调用js的实例分享
2017/10/27 Javascript
分析javascript原型及原型链
2018/03/18 Javascript
antd组件Upload实现自己上传的实现示例
2018/12/18 Javascript
Vue使用zTree插件封装树组件操作示例
2019/04/25 Javascript
layui实现二维码弹窗、并下载到本地的方法
2019/09/25 Javascript
24行JavaScript代码实现Redux的方法实例
2019/11/17 Javascript
阿望教你用vue写扫雷小游戏
2020/01/20 Javascript
vue+animation实现翻页动画
2020/06/29 Javascript
python 字符串split的用法分享
2013/03/23 Python
python中list常用操作实例详解
2015/06/03 Python
Python实现递归遍历文件夹并删除文件
2016/04/18 Python
使用Python来开发微信功能
2018/06/13 Python
django主动抛出403异常的方法详解
2019/01/04 Python
基于python-pptx库中文文档及使用详解
2020/02/14 Python
python如何快速拼接字符串
2020/10/28 Python
Ubuntu权限不足无法创建文件夹解决方案
2020/11/14 Python
墨西哥皇宫度假村预订:Palace Resorts
2018/06/16 全球购物
草莓网中国:StrawberryNet中国
2020/08/17 全球购物
优秀信贷员先进事迹
2014/01/31 职场文书
《晏子使楚》教学反思
2014/02/08 职场文书
大学生入党积极分子自我评价
2014/09/20 职场文书
2015世界地球日活动总结
2015/02/09 职场文书
《金色的草地》教学反思
2016/02/17 职场文书
Python常遇到的错误和异常
2021/11/02 Python
JavaCV实现照片马赛克效果
2022/01/22 Java/Android