使用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+Dhtml:WEB程序员简易开发工具包(预先体验版)
Nov 07 Javascript
javascript prototype 原型链
Mar 12 Javascript
仅IE9/10同时支持script元素的onload和onreadystatechange事件分析
Apr 27 Javascript
使用js对select动态添加和删除OPTION示例代码
Aug 12 Javascript
提升PHP安全:8个必须修改的PHP默认配置
Nov 17 Javascript
JavaScript使用yield模拟多线程的方法
Mar 19 Javascript
快速掌握WordPress中加载JavaScript脚本的方法
Dec 17 Javascript
用原生JS对AJAX做简单封装的实例代码
Jul 13 Javascript
AngularJs篇:使用AngularJs打造一个简易权限系统的实现代码
Dec 26 Javascript
老生常谈javascript的面向对象思想
Aug 22 Javascript
js正则相关知识点专题
May 10 Javascript
Vue.js 时间转换代码及时间戳转时间字符串
Oct 16 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
索尼SONY SRF-S83/84电路分析和打磨
2021/03/02 无线电
PHP面向对象编程快速入门
2006/12/14 PHP
apache和php之间协同工作的配置经验分享
2013/04/08 PHP
VPS中使用LNMP安装WordPress教程
2014/12/28 PHP
php通过rmdir删除目录的简单用法
2015/03/18 PHP
PHP实现时间比较和时间差计算的方法示例
2017/07/24 PHP
SOSO地图API使用(一)在地图上画圆实现思路与代码
2013/01/15 Javascript
JQuery中ajax方法访问web服务实例
2015/07/18 Javascript
各式各样的导航条效果css3结合jquery代码实现
2016/09/17 Javascript
javascript定时器取消定时器及优化方法
2017/07/08 Javascript
jQuery实现的简单获取索引功能示例
2018/06/04 jQuery
基于Angularjs-router动态改变Title值的问题
2018/08/30 Javascript
vue 集成 vis-network 实现网络拓扑图的方法
2019/08/07 Javascript
[03:02]辉夜杯主赛事第二日 每日之星
2015/12/27 DOTA
Python使用cookielib模块操作cookie的实例教程
2016/07/12 Python
详解 Python中LEGB和闭包及装饰器
2017/08/03 Python
python版简单工厂模式
2017/10/16 Python
django之session与分页(实例讲解)
2017/11/13 Python
Python3.5迭代器与生成器用法实例分析
2019/04/30 Python
Python3.5集合及其常见运算实例详解
2019/05/01 Python
使用jupyter notebook直接打开.md格式的文件
2020/04/10 Python
如何在VSCode下使用Jupyter的教程详解
2020/07/13 Python
python设置中文界面实例方法
2020/10/27 Python
HTML5 video 上传预览图片视频如何设置、预览视频某秒的海报帧
2018/08/28 HTML / CSS
原生 JS+CSS+HTML 实现时序图的方法
2019/07/31 HTML / CSS
AmazeUI 单选框和多选框的实现示例
2020/08/18 HTML / CSS
Unix如何添加新的用户
2014/08/20 面试题
家庭教育先进个人事迹材料
2014/01/24 职场文书
物业保安员岗位职责制度
2014/01/30 职场文书
作弊检讨书1000字
2014/02/01 职场文书
机修工工作职责
2014/02/21 职场文书
家长学校实施方案
2014/03/15 职场文书
小学学校门卫岗位职责
2014/08/03 职场文书
2015新学期家长寄语
2015/02/26 职场文书
情侣餐厅的创业计划书范本!
2019/07/26 职场文书
CSS巧用渐变实现高级感背景光动画
2021/12/06 HTML / CSS