使用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 相关文章推荐
小米公司JavaScript面试题
Dec 29 Javascript
JavaScript闭包详解
Feb 02 Javascript
JAVA四种基本排序方法实例总结
Jul 24 Javascript
js实现页面跳转的五种方法推荐
Mar 10 Javascript
给easyui datebox扩展一个清空的实例
Nov 09 Javascript
jQuery列表检索功能实现代码
Jul 17 jQuery
浅谈angular4生命周期钩子
Sep 05 Javascript
利用JQuery操作iframe父页面、子页面的元素和方法汇总
Sep 10 jQuery
基于vue实现网站前台的权限管理(前后端分离实践)
Jan 13 Javascript
JavaScript设计模式之工厂模式简单实例教程
Jul 03 Javascript
从零到一详聊创建Vue工程及遇到的常见问题
Apr 25 Javascript
vue页面更新patch的实现示例
Mar 25 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+MYSQL的文章管理系统(一)
2006/10/09 PHP
PHP 页面跳转到另一个页面的多种方法方法总结
2009/07/07 PHP
让codeigniter与swfupload整合的最佳解决方案
2014/06/12 PHP
PHP中的命名空间相关概念浅析
2015/01/22 PHP
PHP绕过open_basedir限制操作文件的方法
2018/06/10 PHP
PHP设计模式之委托模式定义与用法简单示例
2018/08/13 PHP
javascript入门·动态的时钟,显示完整的一些方法,新年倒计时
2007/10/01 Javascript
jQuery EasyUI API 中文文档 可调整尺寸
2011/09/29 Javascript
Javascript中 关于prototype属性实现继承的原理图
2013/04/16 Javascript
用js实现in_array的方法
2013/11/05 Javascript
JavaScript的面向对象编程基础
2015/08/13 Javascript
纯javascript版日历控件
2016/11/24 Javascript
AngularJS中$http的交互问题
2017/03/29 Javascript
vue实现提示保存后退出的方法
2018/03/15 Javascript
Angular resolve基础用法详解
2018/10/03 Javascript
AngularJs中$cookies简单用法分析
2019/05/30 Javascript
详解vue-cli@2.x项目迁移日志
2019/06/06 Javascript
浅谈Python用QQ邮箱发送邮件时授权码的问题
2018/01/29 Python
Python常见排序操作示例【字典、列表、指定元素等】
2018/08/15 Python
python实现将多个文件分配到多个文件夹的方法
2019/01/07 Python
python算法与数据结构之单链表的实现代码
2019/06/27 Python
Python爬虫 urllib2的使用方法详解
2019/09/23 Python
python opencv进行图像拼接
2020/03/27 Python
python logging.info在终端没输出的解决
2020/05/12 Python
python 如何将office文件转换为PDF
2020/09/22 Python
香港草莓网土耳其网站:Strawberrynet TR
2017/03/02 全球购物
印尼旅游网站:via
2017/11/12 全球购物
美国半成品食材配送服务商:Home Chef
2018/01/25 全球购物
幼儿师范毕业生自荐信
2013/11/09 职场文书
工程专业应届生求职信
2014/02/19 职场文书
诉讼授权委托书
2014/10/15 职场文书
2014年小学少先队工作总结
2014/12/18 职场文书
维稳工作承诺书
2015/01/20 职场文书
雨雪天气温馨提示
2015/07/15 职场文书
运动会开幕式新闻稿
2015/07/17 职场文书
老乡会致辞
2015/07/28 职场文书