教程 pingora tutorial

用户指南

Pingora 是一个基于 Rust 构建的高性能代理框架,由 Cloudflare 开发并开源。
它被用于替代 Nginx,在高并发场景下展现出更好的性能与资源效率。

什么是 Pingora

Pingora 是一个 网络代理框架(proxy framework),它并不是单一应用程序,而是可被用来构建自定义代理、负载均衡器或服务网关的 框架。
通过模块化设计和异步运行模型,你可以在 Pingora 基础上构建:

  • 反向代理(Reverse Proxy)
  • 正向代理(Forward Proxy)
  • 负载均衡(Load Balancer)
  • 服务网关(Service Gateway)
  • 内部流量路由与过滤器系统

Pingora 的特点

特性 描述
🚀 高性能 基于 Rust 异步模型,比 Nginx 更快的连接复用与内存安全
🔐 内存安全 Rust 的所有权系统杜绝内存泄漏与数据竞争
⚙️ 模块化 按阶段拆分请求生命周期,可自定义过滤器与中间层
📊 可观测性 内置 Tracing 与 Prometheus 支持
🧠 灵活扩展 提供 CTX 上下文共享机制,可在多个阶段共享状态

基础组件

Pingora 的主要组成部分包括:

  • pingora-core:核心运行库,提供事件循环、IO、多线程调度;
  • pingora-proxy:构建 HTTP 代理的核心模块;
  • pingora-limiter:提供限流与速率控制;
  • pingora-runtime:异步运行时层,管理线程与任务;
  • pingora-openssl / pingora-boringssl:SSL/TLS 支持;
  • pingora-tools:辅助开发与调试工具。

快速上手流程

  1. 安装 Rust 环境
bash
   curl https://sh.rustup.rs -sSf | sh

`

  1. 创建 Pingora 项目
bash
   cargo new pingora-demo
   cd pingora-demo
   cargo add pingora-proxy
  1. 编写最小代理示例
rust
   use pingora::prelude::*;

   #[tokio::main]
   async fn main() {
       let mut server = Server::new(None).unwrap();
       server.bootstrap();
       let app = http_proxy_service(None);
       server.run_forever(app).unwrap();
   }
  1. 运行项目
bash
   cargo run

打开浏览器访问 http://127.0.0.1:8080,即可看到代理服务启动成功。

下一步

接下来,我们将学习如何 运行 Pingora 服务器、实现 优雅重启、配置管理 等关键功能。 👉 继续阅读:运行 Pingora 服务器