1媒介
作为前端开辟 工程师 ,我们会常常 碰到 一些环境 题目 。比如 本地 调试线上页面、跨域 、DNS缓存、网络哀求 抓包、HTTPS哀求 开辟 调试以及证书等等 。为了办理 这些题目 ,我们必要 利用 hosts、Nginx 、Fiddler/Charles以及各种各样的hosts切换管理工具等。在利用 这写工具的同时,还存在一些题目 必要 办理 。
我们每天 都要耗费 很多 时间在环境 的设置 、切换题目 上,因此必要 一个更好的方案来同一 办理 这些题目 。
hiproxy就是为了办理 这些题目 而生 。这篇文章的内容重要 分为三个方面:hiproxy诞生的配景 (现有开辟 模式反思)、hiproxy先容 以及现壮和将来 规划。
2现有开辟 模式反思
我们每天 都谋面 临多套环境 ,比如 线上环境 、Beta环境 、Dev环境 以及本地 开辟 环境 等,这里同一 分为两类:线上环境 和测试环境 。
体系 hosts
正常环境 下,我们哀求 资源的时间 ,走的是线上环境 。而我们在开辟 调试的时间 ,是不盼望 如许 的,我们必要 在不修改哀求 地点 的环境 下 ,将哀求 定向到测试环境 。那么,我们应该怎么做呢?
各人 都应该能想到利用 hosts就能办理 这个题目 。hosts利用 简单 ,而且不必要 安装任何第三的工具 。
Nginx
随着时间的推移 ,公司的项目越来越多,我们必要 维护的项目也越来越多。假设我们为特定域名设置 hosts,指向本地 开辟 环境 ,这个域名下全部 哀求 都到了本地 。要使页面各种资源能访问,我们就必要 在本地 搭建一套完备 的运行环境 。
但是,差别 的项目大概 必要 利用 差别 的端标语 ,加上复杂的后端工程以及数据库 ,我们不盼望 也不太大概 在本地 搭建起一套完备 的环境 来运行各种依靠 的项目。我们只盼望 把我们关心的这些项目(大部分 都是前端项目)在本地 运行起来以便开辟 调试,其他的项目(大部分 是后端项目)则利用 线上环境 。
这时间 ,我们又该怎么做呢?
聪明 的前端开辟 工程师又想到了利用 Nginx来办理 这个题目 。Nginx是一个良好 、高效的HTTP和反向署理 服务器 ,可以更正确 地对哀求 做署理 。
可以说Nginx比力 美满 的办理 了我们碰到 的题目 。
但是,我们在利用 Nginx的过程中,也存在一些不美满 的地方 ,重要 分为两个方面:必要 hosts共同 、每个人都必要 各安闲 本地 维护一套Nginx设置 ,相互 拷贝设置 文件。
必要 hosts共同
前面提到过,正常环境 下 ,哀求 资源的时间 ,走的是线上环境 。固然 在本地 安装了Nginx,也设置 了各种个样的哀求 署理 。默认环境 下 ,欣赏 器是不会哀求 到本地 Nginx服务的,要哀求 到本地 Nginx,必要 修改体系 hosts。
由此可见,hosts黑白 常非常的紧张 ,也正是由于 hosts的紧张 性,产生了各种各样的hosts切换、管理工具 。
相互 拷贝设置 文件
别的 ,各人 如今 的风俗 是 ,各安闲 本地 维护一套Nginx设置 。最初,由一个工程师在本地 设置 好Nginx,然后其他工程师从他这里复制一份设置 ,稍作修改在本地 运行。假如 有新成员参加 对应的项目,也是从其他人那边 复制一份 。
如许 的弊端 在于,每个人复制设置 文件、服从 比力 低。而且一旦环境 变革 ,此中 一个人修改之后,其他人的设置 并不会随之被修改,更新不及时 。
其他题目
在利用 hosts/Nginx以及hosts切换管理工具的同时 ,还会存在其他题目 ,比如 DNS缓存 、HTTPS哀求 调试以及证书天生 和信托 题目 等 。
既然我们利用 了这么多工具尚有 这么多题目 ,我们在想:到底有没有一种更好的方法来办理 这些题目 ?
要是有一个工具,能一次性办理 这些题目 ,那该多好啊!
于是,hiproxy就如许 诞生了。
3hiproxy先容
hiproxy是一个基于Node.js开辟 的轻量、可扩展的署理 工具。接下来重要 从四个方面去先容 它 。
特点
hiproxy的特点,重要 总结为四点:
轻量可扩展:hiproxy依靠 的第三方库比力 少 ,安装快速;支持扩展下令 /指令/页面。详情可以查察 插件开辟 指南。
复用现有开辟 设置 风俗 :hiproxy采取 了各人 从前 认识 的hosts和Nginx风格的设置 ,最洪流 平 地复用了各人 之前的开辟 、设置 风俗 。学习本钱 低,利用 起来更加轻松!
HTTPS证书主动 天生 与管理:hiproxy可以扮演 CA脚色 ,天生 根证书 。而且 能主动 根据每次哀求 的域名信息,天生 相对应的域名证书。
跟欣赏 器高度融合:hiproxy在启动服务的时间 ,可以知心 地打开一个新的欣赏 器窗口并主动 设置 好署理 ,省去了用户本身 设置署理 的步调 。
根本 利用
这里简单 先容 一下hiproxy的利用 步调 ,假如 必要 查察 具体 的利用 文档,请访问hiproxy的文档网站:https://hiproxy.org/
第一步:启动hiproxy服务:hiproxy是一个下令 行工具 ,我们可以进入到工作空间(workspace),然后启动一个署理 服务 。
第二步:查找设置 文件:启动之后,hiproxy会主动 查找工作空间中全部 项目下的设置 文件,做语法分析 并转换成hiproxy内部可利用 的署理 规则树。
第三步:打开欣赏 器窗口:然后hiproxy会打开一个欣赏 器窗口 ,并主动 为我们设置 好署理 。在Chrome中,可以访问 来查察 已见效 的署理 。这个窗口是 独立于其他欣赏 器窗口的,这设置 的署理 不影响其他欣赏 器窗口。
第四步:开辟 调试:接下来 ,我们就可以利用 这个欣赏 器窗口了。这个欣赏 器窗口中的全部 哀求 只要设置 了对应的署理 规则,hiproxy都会亲身 行止 理 惩罚 。
设置 文件
hiproxy保举 把设置 文件存放到项目中并提交到Git,与团队中其他的成员共享设置 。假如 是简单 的设置 ,可以采取 hosts,而比力 复杂的设置 ,可以利用 rewrite。
简单 设置 -hosts
hosts可以看作一个加强 版的体系 hosts ,除了体系 hosts语法之外,hiproxy也扩展了hosts语法,支持端标语 。
示例:
复杂设置 -rewrite
对于复杂需求的设置 ,hiproxy采取 rewrite设置 文件,参考了Nginx设置 语法,大部分 语法跟Nginx一样。重要 特点:
语法跟Nginx设置 语法雷同 ;
支持正则表达式/分组;
支持哀求 、相应 内容修改;
支持内置变量;
示例:
跟之前的对比
DNS缓存题目 :之前修改体系 hosts后,由于DNS缓存的存在 ,必要 等待 缓存逾期 大概 重启欣赏 器。利用 了hiporxy,更改设置 文件之后,hiproxy会主动 更新 ,不必要 重启,革新 欣赏 器即可见效 !
设置 文件团队共享:之前每个人本地 维护本身 的hosts/Nginx设置 文件,维护本钱 高 ,更新不及时 。而hiporxy保举 把设置 文件放到项目中并提交git,团队共享 。缩减维护本钱 ,进步 生产力。
https证书题目 :之前用复杂的OpenSSL下令 天生 自署名 证书或找他人新增域名 ,证书不被信托 。而hiporxy能主动 天生 证书,不消 本身 新增域名 。唯一要做的就是导入一次根证书。具体 的设置 请查察 SSL/TLS证书设置 。
同一 办理 痛点:之前每个人都要维护hosts、利用 Nginx和一些其他的辅助工具 。利用 了hiproxy,可以不再用利用 各种工具维护体系 hosts ,不再必要 用nginx。
4hiproxy近况 和将来 规划
近况
开源:hiproxy如今 已经开源,全部 代码和文档都在github:https://github.com/hiproxy/hiproxy。欢迎 各人 star、为hiproxy贡献代码大概 给出发起 。
测试:从代码层面来讲,覆盖率已经到达 了90%以上,根本 利用 的case已经全部覆盖。
文档:如今 我们为hiproxy编写了重要 的文档:https://hiproxy.org/ ,但是如今 文档中大概 存在一些细节方面的缺失,我们会不绝 美满 。
维护:如今 重要 是我(@zdying)、狼叔(@i5ting) 、zhouhailong、huaziHear和其他几个贡献者在维护,我们会长期 维护 ,欢迎 各人 利用 hiproxy 。
插件:如今 我们为hiproxy开辟 了一个Dashboard插件,可在线管理hiproxy的设置 文件,详情可以查察 hiproxy-plugin-dashboard;
将来 规划
测试/文档:hiproxy会不绝 美满 测试 ,争代替 码覆盖率到达 100%,添加更多的Case。编写更加美满 过细 的文档,方便各人 查阅。
更多实用插件:hiproxy将来 会有更多实用的插件、指令和CLI下令 ,办理 更多实际 的题目 。比如 可编程mock 、网络哀求 抓包等 。
性能:hiproxy会不绝 改进代码、优化数据布局 和算法,进一步提拔 性能。
5末了
hiproxy正处于发展 时期,欢迎 各人 关注并利用 hiproxy并提着名 贵 的发起 ,让hiproxy更得当 各人 、更加强 大。同时也盼望 各人 能为hiproxy贡献一些源代码大概 文档的编写 、翻译 。
hiproxy地点 :https://github.com/hiproxy
hiproxy文档:https://hiproxy.org/