使用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 相关文章推荐
基于jquery的合并table相同单元格的插件(精简版)
Apr 05 Javascript
JS网页播放声音实现代码兼容各种浏览器
Sep 22 Javascript
node.js中的fs.mkdir方法使用说明
Dec 17 Javascript
javascript实现可拖动变色并关闭层窗口实例
May 15 Javascript
js实现的光标位置工具函数示例
Oct 03 Javascript
jQuery事件详解
Feb 23 Javascript
基于Vue.js实现tab滑块效果
Jul 23 Javascript
详解如何让InstantClick兼容MathJax、百度统计等
Sep 12 Javascript
vue 动态改变静态图片以及请求网络图片的实现方法
Feb 07 Javascript
React路由鉴权的实现方法
Sep 05 Javascript
JQuery实现ul中添加LI和删除指定的Li元素功能完整示例
Oct 16 jQuery
解决vue init webpack 下载依赖卡住不动的问题
Nov 09 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
PHILIPS D1835/D1875的电路分析与打理
2021/03/02 无线电
在PHP中检查PHP文件是否有语法错误的方法
2009/12/23 PHP
CodeIgniter框架URL路由总结
2014/09/03 PHP
php控制文件下载速度的方法
2015/03/24 PHP
php将图片保存为不同尺寸图片的图片类实例
2015/03/30 PHP
php正则表达式基本知识与应用详解【经典教程】
2017/04/17 PHP
javascript常用方法、属性集合及NodeList 和 HTMLCollection 的浏览器差异
2010/12/25 Javascript
js 三级关联菜单效果实例
2013/08/13 Javascript
JQuery与Ajax调用新浪API获取短网址的代码
2014/02/07 Javascript
jQuery实现DIV层收缩展开的方法
2015/02/27 Javascript
Javascript数据结构与算法之列表详解
2015/03/12 Javascript
js由下向上不断上升冒气泡效果实例
2015/05/07 Javascript
jQuery插件boxScroll实现图片轮播特效
2015/07/14 Javascript
web前端开发JQuery常用实例代码片段(50个)
2015/08/28 Javascript
原生JavaScript实现滚动条效果
2020/03/24 Javascript
使用jQuery实现鼠标点击左右按钮滑动切换
2017/08/04 jQuery
JS实现的将html转为pdf功能【基于浏览器端插件jsPDF】
2018/02/06 Javascript
微信小程序实现人脸检测功能
2018/05/25 Javascript
一秒学会微信小程序制作table表格
2019/02/14 Javascript
vue+高德地图写地图选址组件的方法
2019/05/18 Javascript
vue 导航菜单刷新状态不消失,显示对应的路由界面操作
2020/08/06 Javascript
Python素数检测的方法
2015/05/11 Python
Python中的localtime()方法使用详解
2015/05/22 Python
python 提取tuple类型值中json格式的key值方法
2018/12/31 Python
Python3并发写文件与Python对比
2019/11/20 Python
pytorch快速搭建神经网络_Sequential操作
2020/06/17 Python
使用pygame实现垃圾分类小游戏功能(已获校级二等奖)
2020/07/23 Python
详解Django ORM引发的数据库N+1性能问题
2020/10/12 Python
HTML5 canvas 瀑布流文字效果的示例代码
2018/01/31 HTML / CSS
企划专员岗位职责
2013/12/09 职场文书
2015年小学语文工作总结
2015/05/25 职场文书
商务宴会祝酒词
2015/08/11 职场文书
教师远程培训心得体会
2016/01/09 职场文书
2019年英语版感谢信(8篇)
2019/09/29 职场文书
怎么用Python识别手势数字
2021/06/07 Python
Windows Server 2016 配置 IIS 的详细步骤
2022/04/28 Servers