NeXTSTEP Programming Mastermind
    Share your code. npm Orgs help your team discover, share, and reuse code. Create a free org »

    dproxypublic

    Web调试代理 Dproxy

    按照配置的 规则列表 提供灵活的http代理服务.
    (暂时只支持普通http请求,后续添加websocket和https的支持)

    主要面向前端开发环境做的设计,由此省掉繁琐的“绑Host清DNS缓存”操作

    文档还需要完善,有问题可以直接联系我.

    Mac下已经确认正常使用,其他平台功能正常,安装操作没有测试过

    由于node0.8修改了tty相关接口,导致进入roll模式无法退出,稍后修复。

    主要功能

    普通的http代理服务器功能:代理浏览器的http请求,原样返回请求结果

    遵照 规则列表 ,将匹配到的请求交给指定的handler处理,实现“偷梁换柱”的功能

    作为一个简单的静态服务器:在前端开发的测试环境中替代nginx

    使用方法

    安装

    当然你得先安装node和npm

      $ [sudo] npm install dproxy -g

    第一次运行会自动创建~/.dproxy目录,内含几个配置样例,copy一下改个名就可以用了

    想要安装最新的代码,直接clone这个库,执行 node cli.js

    配置

    配置文件都放在~/.dproxy目录下,格式仿造nginx的配置文件风格

    • dproxy.conf 是代理服务器全局配置

      工程下自带一个样例: dproxy.conf.sample
      直接拷贝,修改使用

    • rule 文件夹下的所有*.rule文件都是"代理规则"配置文件

      也自带了一个样例: rule.sample 直接拷贝,修改使用

    代理规则

    每个.rule文件被加载到服务中被当做一个"规则分组"(group)
    分组之间保持独立(不会互相覆盖)
    根据分组启用的先后顺序,后启用的分组,其中的规则会优先匹配
    只能操作分组的"启用/停用"(不提供单条规则的操作)

    .rule文件主要由三大部分: handler定义块, oneline配置块, 任意多个domain配置块

    handler定义块:

    这里定义的handler仅可以在当前分组中引用,全局配置文件(dproxy.conf)中同名的handler会被忽略
    handler的书写格式见.sample样例文件

    目前dproxy支持的handler类型:

    • local - 本地文件
    • remote - 某指定host请求
    • opm - 从opm服务获取文件
    • online - 代理到线上环境

    其中, opm 是一个前端的包管理工具,用python编写项目地址

    分域名配置块

    每个域名写一个块(多个域名用逗号隔开)
    rewrite 类似nginx的用法
    default 如果没有找到匹配的规则,默认使用该条配置的handler处理该域名下的请求

    匹配条件 只写除去域名剩下的路径部分,可以使用*作为通配符,用(xx|xxx)表示"或"操作

    oneline配置块

    意思是"单行配置",用一行配置添加一条规则, 匹配条件 需要写完整的url,也可以使用通配符

    交互命令

    proxy启动之后会进入一个简单的命令行模式,按一下Tab键列出所有命令:

    • groups 查看所有加载上来的规则分组,列表中的"*"号标示已启用的分组
    • up 启用一个分组 up
    • down 停用一个分组 down
    • ls 查看"某分组|全部"规则列表 ls []
    • roll 实时的滚动显示正在处理的请求,在滚动模式下按"q"键退回到命令行模式
    • status 查看服务器状态(内存,平台…)
    • exit 停止服务并退出

    处理一个请求的流程

    1. 接收到一个请求
    2. 查看该请求url是否与 规则列表 中某条规则匹配
    3. 如果匹配,查询到该条规则指定的数据源(handler)
    4. 根据handler的类型,把参数传递给相应的代理模块
    5. 由代理模块发出请求,将处理结果返回浏览器
    6. 如果不匹配,默认直接从线上取回该内容返回浏览器

    Keywords

    none

    install

    npm i dproxy

    Downloadsweekly downloads

    6

    version

    0.7.2

    license

    none

    repository

    githubgithub

    last publish

    collaborators

    • avatar