美文网首页
使用express做proxy测试代理服务器

使用express做proxy测试代理服务器

作者: 小杺 | 来源:发表于2018-10-19 17:47 被阅读108次

开篇

项目情况:

本项目前后端分离开发,前端测试需要搭建一个本地测试服务器,由于没有mock数据服务,所以项目中前端开发一直使用部署服务器的测试接口,测试接口的调用需要用本人itcode和password登陆部署服务器才能调用。

nginx本地代理服务器

这是之前使用的本地测试服务器的方式,使用nginx来做代理,转发请求,带上cookie,但是由于nginx配置复杂,操作繁琐,启动速度缓慢,系统迁移成本过高等原因,且本地测试不需要大并发请求,所以被本人摈弃使用。

nodejs http模块编写代理服务器

简单附上一段原理性代码:

const http = require('http');

const opt = {
    headers: {
        'Content-Type': 'application/x-www-form-urlencoded',
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36',
        'Cookie': 'SESSION=f32d0c6c-4a9c-40d1-9b34-8cb863acd79c'
    }
};

http.get('http://wx.10085.cn/choprt/base/user/loginUser?_=1539921220226', opt, function (res) {
    console.log(res.statusCode);
    let result = '';
    
    res.on('data', function (data) {
        result = result + data;
    });
    res.on('end', function () {
        console.log(result);
    })
});

由于,http模块封装度过低,搭建开发成本过大,不能适应以后工程调整快速响应,所以暂时不考虑。

express + http-proxy-middleware

源码如下:

const express = require('express');
const path = require('path');
const proxy = require('http-proxy-middleware');
    
const app = express();
    
app.use(express.static(path.join(__dirname, 'rt-manage')));
    
    //proxy middleware settings
    const proxyTable = {
        '/choprt': {
            target: 'http://wx.10085.cn',
            changeOrigin: true,
            onProxyReq: function (proxyReq, req, res) {
                // proxyReq.setHeader('host', 'wx.10085.cn');
                console.log(req.path);
                console.log(res.statusCode);
                proxyReq.setHeader('User-Agent', 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36');
                proxyReq.setHeader('Content-Type', 'application/x-www-form-urlencoded');
                proxyReq.setHeader('Cookie', 'SESSION=f32d0c6c-4a9c-40d1-9b34-8cb863acd79c');
            },
            onProxyRes: function (proxyRes, req, res) {
    
            }
        }
    };
    Object.keys(proxyTable).forEach(function (keys) {
        console.log(keys);
        app.use(keys, proxy(proxyTable[keys]));
    });
    //proxy middleware settings end
    
    app.listen(3000, function () {
        console.log('server is going');
    });

这种模式开发效率较快,还存在一个问题,就是session有失效时间,失效后需要自己登陆重新获取,所以比较麻烦,还有待改进。


参考文献:

http-proxy-middleware
Node.Js http模块(一)-发送http请求实例
node + express 搭建代理服务器(附源码)
npm模块之http-proxy-middleware使用教程(译)
express配置代理

相关文章

  • 使用express做proxy测试代理服务器

    开篇 项目情况: 本项目前后端分离开发,前端测试需要搭建一个本地测试服务器,由于没有mock数据服务,所以项目中前...

  • express-http-proxy使用

    官方文档[https://www.npmjs.com/package/express-http-proxy] 使用...

  • 不用20行搞定node反向代理

    proxy.js var express = require('express'); var app = expr...

  • 2016.08.23

    Proxy(概念): 代理服务器。请求不直接发给网络,而是先发给proxy,再由proxy发给网络。 Nginx...

  • 代理与反向代理

    代理(代理服务器) 什么是代理服务器(Proxy Server) 代理服务器是一种重要的服务器安全功能,它的工作主...

  • 使用Rust实现一个socks5代理服务器

    [TOC] 使用Rust实现一个socks5代理服务器 socks5proxy SOCKS是一种网络传输协议,主要...

  • Apache反向代理

    什么是反向代理服务器? 反向代理(Reverse Proxy)方式是指以代理服务器来接受internet上的连接请...

  • 手机抓包原理

    代理服务器作为一个中间人,client先向proxy发出请求,proxy再将请求转发给server server返...

  • express-http-proxy使用方法

    express-http-proxy是一个express代理中间件,其用法如下: 安装 用法 例如,将路由为'/p...

  • Nginx反向代理服务器+负载均衡

    nginx反向代理服务器+负载均衡 用nginx做反向代理和负载均衡非常简单, 支持两个用法 1个proxy, 1...

网友评论

      本文标题:使用express做proxy测试代理服务器

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