使用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 相关文章推荐
如何取得中文输入的真实长度?
Jun 24 Javascript
jquery如何实现在加载完iframe的内容后再进行操作
Sep 10 Javascript
3分钟写出来的Jquery版checkbox全选反选功能
Oct 23 Javascript
Javascript中克隆一个数组的实现代码
Dec 06 Javascript
JS小游戏之极速快跑源码详解
Sep 25 Javascript
Bootstrap模态框调用功能实现方法
Sep 19 Javascript
基于JQuery的购物车添加删除以及结算功能示例
Mar 08 Javascript
Angular.js实现获取验证码倒计时60秒按钮的简单方法
Oct 18 Javascript
深入理解JS中Number(),parseInt(),parseFloat()三者比较
Aug 24 Javascript
vue通过cookie获取用户登录信息的思路详解
Oct 30 Javascript
vue-router beforeEach跳转路由验证用户登录状态
Dec 26 Javascript
vue 实现上传组件
May 31 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
成本8450万,票房仅2亿,口碑两极分化,又一部DC电影扑街了
2020/04/09 欧美动漫
PHP FOR MYSQL 代码生成助手(根据Mysql里的字段自动生成类文件的)
2011/07/23 PHP
Nginx服务器上安装并配置PHPMyAdmin的教程
2015/08/18 PHP
PHP随手笔记整理之PHP脚本和JAVA连接mysql数据库
2015/11/25 PHP
详解PHP归并排序的实现
2016/10/18 PHP
解决PHP 7编译安装错误:cannot stat ‘phar.phar’: No such file or directory
2017/02/25 PHP
javascript setTimeout()传递函数参数(包括传递对象参数)
2010/04/07 Javascript
基于jQuery替换table中的内容并显示进度条的代码
2011/08/02 Javascript
JS获取鼠标坐标的实例方法
2013/07/18 Javascript
jQuery实现冻结表头的方法
2015/03/09 Javascript
JavaScript高级程序设计(第三版)学习笔记1~5章
2016/03/11 Javascript
深入理解JavaScript内置函数
2016/06/03 Javascript
JavaScript仿微博发布信息案例
2016/11/16 Javascript
JavaScript Base64 作为文件上传的实例代码解析
2017/02/14 Javascript
js通过keyCode值判断单击键盘上某个键,然后触发指定的事件方法
2017/02/19 Javascript
node koa2实现上传图片并且同步上传到七牛云存储
2017/07/31 Javascript
使用JS实现气泡跟随鼠标移动的动画效果
2017/09/16 Javascript
elemetUi 组件--el-upload实现上传Excel文件的实例
2017/10/27 Javascript
前端必备插件之纯原生JS的瀑布流插件Macy.js
2017/11/22 Javascript
vue click.stop阻止点击事件继续传播的方法
2018/09/04 Javascript
JS解惑之Object中的key是有序的么
2019/05/06 Javascript
Bootstrap实现模态框效果
2019/09/30 Javascript
微信小程序转化为uni-app项目的方法示例
2020/05/22 Javascript
Python BeautifulReport可视化报告代码实例
2020/04/13 Python
使用Matplotlib绘制不同颜色的带箭头的线实例
2020/04/17 Python
CSS3 制作绽放的莲花采用效果叠加实现
2013/01/31 HTML / CSS
基于html和CSS3制作酷炫的导航栏
2015/09/23 HTML / CSS
html5标记文字_动力节点Java学院整理
2017/07/11 HTML / CSS
Myprotein西班牙官网:欧洲第一大运动营养品牌
2020/02/24 全球购物
宏碁西班牙官网:Acer西班牙
2021/01/08 全球购物
南京软件公司的.net程序员笔试题
2014/08/31 面试题
Python文件操作的面试题
2013/06/22 面试题
幼儿园教师请假制度
2014/01/16 职场文书
环保公益策划方案
2014/08/15 职场文书
我的中国梦演讲稿400字
2014/08/19 职场文书
证券公司客户经理岗位职责
2015/04/09 职场文书