Pingap 正在参加 2021 年度 OSC 中国开源项目评选,请投票支持!
Pingap 在 2021 年度 OSC 中国开源项目评选 中已获得 {{ projectVoteCount }} 票,请投票支持!
2021 年度 OSC 中国开源项目评选 正在火热进行中,快来投票支持你喜欢的开源项目!
2021 年度 OSC 中国开源项目评选 >>> 中场回顾
Pingap 获得 2021 年度 OSC 中国开源项目评选「最佳人气项目」 !
授权协议 Apache
操作系统 跨平台
软件类型 开源软件
开源组织
地区 国产
投 递 者 粘土帽子
适用人群 未知
收录时间 2024-04-07

软件简介

Pingap是基于pingora开发的,pingora提供了各类模块便于rust开发者使用,但并不方便非rust开发者使用,因此pingap提供了以toml的形式配置简单易用的反向代理,实现支持多location代理转发。

特性如下:

  • 支持多location配置,可通过请求的路径与域名筛选
  • 支持静态文件目录处理,简单方便的chunk的形式响应静态文件
  • 支持mock的响应配置,方便测试或应急使用
  • 支持HTTP1与HTTP2两种协议
  • 无中断请求的配置更新,方便实时更新应用配置
  • 模板式的请求日志输出,可按模板指定各种输出

根据请求的路径选择对应的服务

Pingap支持两种特别的服务类型,以及常规的反向代理服务,具体如下:

  • Stats: 获取Server所对应的性能指标
  • Admin: 根据启动时指定的admin地址或者配置的admin path转发至对应的管理后台服务
  • 其它: 常规的反向代理服务,根据域名与路径选择对应的转发节点

Location的处理逻辑

该Server下的所有location在初始化时根据权重按高至低排序,接受到请求时按顺序一个个匹配到符合的location为止,若无符合的则返回出错。根据符合的location重写path(若无则不需要),添加请求头(若无则不需要),成功响应时添加响应头(若无则不需要)。

let header = session.req_header_mut();
let path = header.uri.path();
let host = header.uri.host().unwrap_or_default();

let (location_index, lo) = self
    .locations
    .iter()
    .enumerate()
    .find(|(_, item)| item.matched(host, path))
    .ok_or_else(|| pingora::Error::new_str(LOCATION_NOT_FOUND))?;

Location的详细说明

Upstream的处理逻辑

Upstream现支持三种类型,包括静态目录Mock响应以及常规的反向代理节点。upstream的处理比较简单,大概如下:

  • 静态目录: 读取对应的静态文件响应,需要注意静态文件是以chunked的形式返回
  • Mock响应: 用于针对部分响应临时mock处理,主要用于临时的应急处理或测试
  • 反向代理节点: 根据各节点的健康情况以及选择算法,选择对应的节点转发请求

Upstream的详细说明

访问日志格式化

日志格式化详细说明

项目地下:github.com/vicanso/pingap

展开阅读全文

代码

的 Gitee 指数为
超过 的项目

评论

点击引领话题📣 发布并加入讨论🔥
发表了资讯
2024/09/29 13:11

Pingap 0.8.7 - 基于 Pingora 构建的反向代理

Pingap 是类似于 nginx 的反向代理,基于 pingora 构建,简单而高效,支持文件与 WEB 界面的两种配置形式,10 分钟即可完成 https 站点服务配置。 特性 服务支持配置多个Location,通过host与path筛选对应的location,按权重逐一匹配选择 支持正则形式配置重写Path,方便应用按前缀区分转发 HTTP 1/2 的全链路支持,包括h2c的支持 支持静态配置、DNS以及docker label的三种服务发现形式 基于TOML格式的配置,配置方式非常简洁,...

0
3
发表了资讯
2024/09/01 19:49

Pingap v0.8.0 - 基于 Pingora 构建的 Rust 反向代理

Pingap 是类似于 nginx 的反向代理,基于 pingora 构建,简单而高效,支持文件与 WEB 界面的两种配置形式,10 分钟即可完成 https 站点服务配置。最新版本支持了更多的插件,提供了 10 多组 prometheus 性能指标,以及提供了基于 opentelemtry 的链路跟踪模块。最新0.8.0版本新增支持docker形式的服务发现、upstream与location变更事件等通知,以及10多项的优化调整。 服务支持配置多个Location,通过host与path筛选对应的locat...

0
3
发表了资讯
2024/08/11 10:52

Pingap v0.7.0 - 基于 Pingora 构建的 Rust 反向代理

Pingap 是类似于 nginx 的反向代理,基于 pingora 构建,简单而高效,支持文件与 WEB 界面的两种配置形式,10 分钟即可完成 https 站点服务配置。最新版本支持了更多的插件,提供了10多组prometheus性能指标,以及提供了基于opentelemtry的链路跟踪模块。 服务支持配置多个Location,通过host与path筛选对应的location,按权重逐一匹配选择 支持正则形式配置重写Path,方便应用按前缀区分转发 HTTP 1/2 的全链路支持,包括h2c的...

0
2
发表了资讯
2024/07/13 21:43

Pingap 0.6.0 - 基于 Pingora 构建的反向代理

Pingap 是类似于 nginx 的反向代理,基于pingora构建,简单而高效,支持文件与 WEB 界面的两种配置形式,10 分钟即可完成 https 站点服务配置。 特性 服务支持配置多个Location,通过host与path筛选对应的location 正则形式重写Path HTTP 1/2 的全链路支持,包括h2c 基于TOML格式的配置,可保存至文件或etcd Upstream与Location的相关配置调整实时生效,其它应用配置更新后,无中断式的优雅更新程序 访问日志的模板化配置,已支...

2
3
发表了资讯
2024/05/04 20:27

Pingap v0.4.0 - 基于 Pingora 的反向代理软件

pingap Pingap是类似于nginx的反向代理,基于pingora构建,简单而高效。最新版本0.4.0已更新,基础框架部分已基本完成,后续各功能通过插件体系增强。 更多信息可在https://github.com/vicanso/pingap上查看。 特性 支持通过host与path筛选对应的location 正则形式重写Path HTTP 1/2的全链路支持 基于TOML格式的配置,可保存至文件或etcd 应用配置更新后,无中断式的优雅更新程序 访问日志的模板化配置 WEB形式的管理后台界面 ...

0
5
发表了资讯
2024/04/21 14:54

Pingap v0.2.0,基于 Pingora 的反向代理软件

Pingap是基于pingora开发的,基于 Apache-2.0 license协议开源,源代码可查阅https://github.com/vicanso/pingap。pingora提供了各类模块便于rust开发者使用,但并不方便非rust开发者使用,因此pingap提供了以toml的形式配置简单易用的反向代理,实现支持多location代理转发,通过插件的形式支持更多的需求场景。特性如下: 支持多location配置,可通过请求的路径与域名筛选 支持HTTP1与HTTP2两种协议 无中断请求的配置更新,方...

0
9
没有更多内容
加载失败,请刷新页面
点击加载更多
加载中
下一页
发表了博客
{{o.pubDate | formatDate}}

{{formatAllHtml(o.title)}}

{{parseInt(o.replyCount) | bigNumberTransform}}
{{parseInt(o.viewCount) | bigNumberTransform}}
没有更多内容
暂无内容
发表了问答
{{o.pubDate | formatDate}}

{{formatAllHtml(o.title)}}

{{parseInt(o.replyCount) | bigNumberTransform}}
{{parseInt(o.viewCount) | bigNumberTransform}}
没有更多内容
暂无内容
暂无内容
0 评论
11 收藏
分享
OSCHINA
登录后可查看更多优质内容
返回顶部
顶部