使用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 相关文章推荐
extjs3 combobox取value和text案例详解
Feb 06 Javascript
jQuery ajax调用WCF服务实例
Jul 16 Javascript
jQuery在页面加载时动态修改图片尺寸的方法
Mar 20 Javascript
12306验证码破解思路分享
Mar 25 Javascript
3个可以改善用户体验的AngularJS指令介绍
Jun 18 Javascript
谈谈Jquery中的children find 的区别有哪些
Oct 19 Javascript
javascript合并表格单元格实例代码
Jan 03 Javascript
js检查是否关闭浏览器的方法
Aug 02 Javascript
AngularJS 模块化详解及实例代码
Sep 14 Javascript
js选项卡的制作方法
Jan 23 Javascript
JS实现按钮颜色切换效果
Sep 05 Javascript
Vant 中的Toast设置全局的延迟时间操作
Nov 04 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
PHP中实现进程间通讯
2006/10/09 PHP
php中通过DirectoryIterator删除整个目录的方法
2015/03/13 PHP
PHP+MySQL统计该库中每个表的记录数并按递减顺序排列的方法
2016/02/15 PHP
PHPCrawl爬虫库实现抓取酷狗歌单的方法示例
2017/12/21 PHP
深入学习微信网址链接解封的防封原理visit_type
2019/08/15 PHP
Yii框架日志操作图文与实例详解
2019/09/09 PHP
jquery.artwl.thickbox.js  一个非常简单好用的jQuery弹出层插件
2012/03/01 Javascript
jquery插件制作 表单验证实现代码
2012/08/17 Javascript
Jquery给基本控件的取值、赋值示例
2014/05/23 Javascript
node.js操作mongoDB数据库示例分享
2014/11/26 Javascript
javascript实现checkbox全选的代码
2015/04/30 Javascript
js如何打印object对象
2015/10/16 Javascript
客户端验证用户名和密码的方法详解
2016/06/16 Javascript
AngularJs Understanding the Model Component
2016/09/02 Javascript
jQuery过滤选择器用法示例
2016/09/12 Javascript
js实现返回顶部效果
2017/03/10 Javascript
手把手搭建安装基于windows的Vue.js运行环境
2017/06/12 Javascript
Vue中render函数的使用方法
2018/01/31 Javascript
使用Vue制作图片轮播组件思路详解
2018/03/21 Javascript
微信小程序与webview交互实现支付功能
2019/06/07 Javascript
JS出现404错误原理及解决方案
2020/07/01 Javascript
微信小程序连续签到7天积分获得功能的示例代码
2020/08/20 Javascript
Python递归函数定义与用法示例
2017/06/02 Python
使用python实现男神女神颜值打分系统(推荐)
2019/10/31 Python
Spring实战之使用util:命名空间简化配置操作示例
2019/12/09 Python
Pandas将列表(List)转换为数据框(Dataframe)
2020/04/24 Python
pycharm无法安装第三方库的问题及解决方法以scrapy为例(图解)
2020/05/09 Python
学生如何注册Pycharm专业版以及pycharm的安装
2020/09/24 Python
CSS3制作文字半透明倒影效果的两种实现方式
2014/08/08 HTML / CSS
华润集团网上药店:健一网
2016/09/19 全球购物
Troy-Bilt官网:草坪割草机、吹雪机、分蘖机等
2019/02/19 全球购物
老师推荐信
2013/10/28 职场文书
2014政务公开实施方案
2014/02/19 职场文书
护林员个人总结
2015/03/04 职场文书
Go语言并发编程 sync.Once
2021/10/16 Golang
Element-ui Layout布局(Row和Col组件)的实现
2021/12/06 Vue.js