美文网首页
express反向代理

express反向代理

作者: hunter97 | 来源:发表于2020-05-29 16:35 被阅读0次
一、正向代理与反向代理
  1. 正向代理
    正向代理,意思是一个位于客户端和原始服务器 (origin server) 之间的服务器,为了从原始服务器取得内容,客户端向代理发送一个请求并指定目标 (原始服务器),然后代理向原始服务器转交请求并将获得的内容返回给客户端。客户端才能使用正向代理。 --摘自百度百科

  2. 反向代理
    反向代理(Reverse Proxy)方式是指以代理服务器来接受 internet 上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给 internet 上请求连接的客户端,此时代理服务器对外就表现为一个反向代理服务器。--摘自百度百科

两者的主要区别在于代理的对象不一样: 正向代理代理的对象是客户端,反向代理代理的对象是服务端。
我们这里说一下通过express实现反向代理。

二、实现
  1. 准备相关插件
npm install --save-dev express http-proxy-middleware connect-timeout
//or
cnpm install --save-dev express http-proxy-middleware connect-timeout

express是基于 Node.js 平台,快速、开放、极简的 web 开发框架。
http-proxy-middleware 是专门用于 http 代理的一个 node 中间件,适用于connect,express, browser-sync 等等,由热门的http-proxy 驱动。

  1. 开发
    新建一个serve.js。
/*
 * @Description: 建立服务文件
 * @Author: cuiht
 * @Date: 2020-05-29 10:00:19
 */
const express = require('express');
const timeout = require('connect-timeout');
const { createProxyMiddleware } = require('http-proxy-middleware');
const app = express();

// HOST 指目标地址 PORT 服务端口
const HOST = 'http://47.104.134.222:18085', PORT = '8080';

// 超时时间
const TIME_OUT = 30 * 1e3;

// 设置端口
app.set('port', PORT);

// 设置超时 返回超时响应
app.use(timeout(TIME_OUT));
app.use((req, res, next) => {
  if (!req.timedout) next();
});

// 设置静态资源路径
app.use('/', express.static('static'));

// 反向代理(这里把需要进行反代的路径配置到这里即可)
// eg:将/api 代理到 ${HOST}/api
// app.use(createProxyMiddleware('/api', { target: HOST }));
// 自定义代理规则
app.use(createProxyMiddleware('/api', {
  target: HOST, // target host
  changeOrigin: true, // needed for virtual hosted sites
  ws: true, // proxy websockets
  pathRewrite: {
    '^/api': '', // rewrite path
  }
}));

// 监听端口
app.listen(app.get('port'), () => {
  console.log(`server running ${PORT }`);
});
  1. 启动
node serve.js

参考文献:使用 express 轻松实现反向代理服务器
有希望之处定有磨练。

相关文章

网友评论

      本文标题:express反向代理

      本文链接:https://www.haomeiwen.com/subject/pfxxzhtx.html