使用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 相关文章推荐
农历与西历对照
Sep 06 Javascript
关于this和self的使用说明
Aug 01 Javascript
js实现仿MSN带关闭功能的右下角弹窗代码
Sep 04 Javascript
JS实现超简洁网页title标题跑动闪烁提示效果代码
Oct 23 Javascript
常用的JQuery函数及功能小结
Mar 24 Javascript
JavaScript  cookie 跨域访问之广告推广
Apr 20 Javascript
轻松掌握JavaScript装饰者模式
Aug 27 Javascript
jQuery简易时光轴实现方法示例
Mar 13 Javascript
基于代数方程库Algebra.js解二元一次方程功能示例
Jun 09 Javascript
基于JS实现网页中的选项卡(两种方法)
Jun 16 Javascript
微信小程序实现tab切换效果
Nov 21 Javascript
Ionic学习日记实现验证码倒计时
Feb 08 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
模仿OSO的论坛(二)
2006/10/09 PHP
PHP中动态显示签名和ip原理
2007/03/28 PHP
php正则过滤html标签、空格、换行符的代码(附说明)
2010/10/25 PHP
PHP+Apache环境中如何隐藏Apache版本
2017/11/24 PHP
PHP的PDO预定义常量讲解
2019/01/24 PHP
基于jQuery的投票系统显示结果插件
2011/08/12 Javascript
ajax不执行success回调而是执行了error回调
2012/12/10 Javascript
关于JavaScript与HTML的交互事件
2013/04/12 Javascript
jQuery之选择组件的深入解析
2013/06/19 Javascript
js中typeof的用法汇总
2013/12/12 Javascript
JS完整获取IE浏览器信息包括类型、版本、语言等等
2014/05/22 Javascript
js判断登录与否并确定跳转页面的方法
2015/01/30 Javascript
js基于面向对象实现网页TAB选项卡菜单效果代码
2015/09/09 Javascript
AngularJS基础 ng-csp 指令详解
2016/08/01 Javascript
BootStrap网页中代码显示用法详解
2016/10/21 Javascript
JS双击变input框批量修改内容
2016/12/12 Javascript
关于Vue在ie10下空白页的debug小结
2018/05/02 Javascript
使用vue-cli3新建一个项目并写好基本配置(推荐)
2019/04/24 Javascript
从0到1搭建element后台框架优化篇(打包优化)
2019/05/12 Javascript
Vue指令之 v-cloak、v-text、v-html实例详解
2019/08/08 Javascript
Node.js爬虫如何获取天气和每日问候详解
2019/08/26 Javascript
[51:39]DOTA2-DPC中国联赛 正赛 Magma vs LBZS BO3 第二场 2月7日
2021/03/11 DOTA
python实现k均值算法示例(k均值聚类算法)
2014/03/16 Python
Python实现基于HTTP文件传输实例
2014/11/08 Python
解决python中无法自动补全代码的问题
2018/12/04 Python
python selenium firefox使用详解
2019/02/26 Python
利用anaconda保证64位和32位的python共存
2021/03/09 Python
python输入错误后删除的方法
2019/10/12 Python
Python  word实现读取及导出代码解析
2020/07/09 Python
美国摄影爱好者购物网站:Focus Camera
2016/10/21 全球购物
电子商务专业自我鉴定
2013/12/18 职场文书
工地门卫岗位职责
2013/12/30 职场文书
演讲比赛获奖感言
2014/02/02 职场文书
2014年银行员工年终自我评价
2014/09/19 职场文书
刑事案件上诉状
2015/05/23 职场文书
投资入股协议书
2016/03/22 职场文书