Skip to content

Latest commit

 

History

History
227 lines (153 loc) · 7.94 KB

README-zh.md

File metadata and controls

227 lines (153 loc) · 7.94 KB

hiproxy

hiproxy

hiproxy是一个基于Node.js开发的轻量级网络代理工具,主要目的是为了解决多个开发者在开发过程中遇到的hosts管理和反向代理的问题。使得在开发时,不再需要修改系统hosts和启动一个Nginx服务。hiproxy扩展了hosts的语法,支持端口号。此外,hiproxy还支持通过类似于nginx配置文件的语法来配置代理。

Build Status Build status codecov js-semistandard-style npm Node.js version license

Why Hiproxy

在前端开发中,如果我们通常会遇到下面的一些问题:

  1. 调试线上页面问题,要在本地进行开发,需要能运行后端的项目(Node.js或者Java等项目),前端工程师在本地搭建一套后端环境,可能代价比较大
  2. 如果有多个前端工程,采用一个域名部分工程 需要请求 线上 资源,部分 工程请求 本地
  3. 为解决跨域等问题,本地开发时需要 修改Response Header
  4. 本地开发https站点时,证书不受信任
  5. 系统 hosts修改 后,不会立即生效

我们会使用Nginx来解决上面的问题。Nginx很优秀,也是我们前端开发工程师的一个非常好的朋友。Nginx的配置文件风格,非常直观,编写配置效率很高。

但是,使用Nginx的时候,我们同时需要使用hosts,把相关请求发送到本地的Nginx服务。

此外,大部分情况下,Nginx的配置文件并不会被提交到代码仓库,所以团队中其他开发者之间会互相拷贝配置文件,这样效率比较低,而且一个人修改了配置文件,其他人的配置不会随之更新。对于多个域名的配置,也都是放到一个统一的目录,然后在主配置里面include,这样也不太方便。

hosts反向代理https缓存 这些琐碎的事情,能不能统一解决?

于是有了hiproxy。

Features

  • 支持Nginx风格的配置文件格式,配置简单直观
  • 支持hosts以及扩展(支持端口号)
  • 支持插件扩展rewrite指令、CLI命令和页面
  • 支持HTTPS证书自动生成
  • 支持代理自动配置(Proxy auto-config)
  • 支持后台启动,日志输出到文件
  • 支持配置文件自动查找
  • 支持打开浏览器窗口并自动配置代理
  • 提供Node.js API
  • ...

Install

npm install -g hiproxy

Usage

CLI

  1. 启动服务
hiproxy start -p 5525 --debug --workspace <path-to-your-workspace>
  1. 配置浏览器代理
127.0.0.1:5525

注意: 也可在启动的时候,添加选项--open [browser],这样hiproxy会自动打开一个浏览器窗口,并设置好代理。

Node.js API

var Server = require('hiproxy').Server;
var proxy = new Server(8848, 10086);

// events
proxy.on('request', function(req, res){
  req.someThing = 'some thing';
  console.log('new request =>', req.method, req.url);
});

proxy.on('data', function(data){
  console.log('on response =>', data.toString());
});

proxy.start().then(function (servers) {
  console.log('proxy server started at: 127.0.0.1:8848');
});

// stop proxy server
// proxy.stop();

// restart proxy server
// proxy.restart();

CLI命令和选项

> hiproxy --help

Commands:

  start   Start a local proxy server
  stop    Stop the local proxy server
  restart  Restart the local proxy server
  state   Show all the servers state
  open    Open browser and set proxy

Options:

  -v, --version     显示版本信息
  -h, --help        显示帮助信息
  -D, --daemon      后台运行
  --log-dir         后台运行时日志存放路径(绝对路径),默认为用户目录
  --log-time        显示日志时间
  --log-level       过滤日志级别,只有指定级别的日志才会显示
  --grep <content>  过滤日志内容,只有保护过滤字符串的日志才会显示

文档

提示: 文档正在编写中,如果你愿意帮忙编写或者翻译文档,请联系zdying@live.com

翻译步骤

 

Wiki

hosts配置示例

hiproxy支持扩展的hosts,支持端口号,例如:

# comment
127.0.0.1 example.com
127.0.0.1:8800 blog.example.com life.example.com

rewrite配置示例

set $port 8899;
set $ip   127.0.0.1;
set $online 210.0.0.0;

domain example.com {
  location / {
    proxy_pass http://$online/;
  }

  location /blog/ {
    proxy_pass http://$ip:$port/blog/;

    proxy_set_header from 'hiproxy';

    set_header proxy 'hiproxy';
  }
}

示例

Here is an Example project https://github.com/hiproxy/hiproxy-example

运行测试

npm test

贡献代码

请参阅CONTRIBUTING.md了解我们的行为准则以及如何为hiproxy贡献代码。

作者

  • zdying - HTML/JavaScript/CSS/Node.js 开发者 zdying
  • zhouhailong - HTML/JavaScript/CSS/Node.js 开发者 zhouhailong
  • Alfred Sang (aka i5ting) - Aircos CTO, StuQ 明星讲师, 开源项目Moa.js的作者, 同时也是Node.js的布道者

您也可以点击contributors查看其他贡献者。

感谢

感谢上面的各位朋友帮忙翻译hiproxy的文档。

升级日志

详情请查看CHANGELOG.md

依赖的第三方库

  • hemsl - a lightweight Node.js command line argv parser and command executor.
  • colors - get color and style in your node.js console.
  • node-forge - JavaScript implementations of network transports, cryptography, ciphers, PKI, message digests, and various utilities.
  • op-browser - Open browser window and set proxy.
  • os-homedir - Node.js 4 os.homedir() ponyfill.
  • url-pattern - easier than regex string matching patterns for urls and other strings. turn strings into data or data into strings.
  • simple-mime - A simple mime database.

感谢以上开源库的作者,提供了这些优秀的库。

License

这个项目采用MIT协议,点击LICENSE查看详细信息。