#web-server #axum #axum-server

axum-bootstrap

a way to bootstrap a web server with axum, including TLS, logging, monitoring, and more

32 releases

Uses new Rust 2024

0.1.31 Jan 28, 2026
0.1.30 Jan 28, 2026
0.1.20 Dec 24, 2025
0.1.15 Nov 28, 2025
0.1.4 Mar 31, 2025

#280 in HTTP server

34 downloads per month

MIT/Apache

78KB
1K SLoC

axum-bootstrap

Crates.io License Rust

基于 Axum 框架的 Rust Web 服务器脚手架,提供了开箱即用的 TLS、日志、监控等功能,帮助开发者快速搭建生产级别的 Web 服务。

✨ 特性

  • 🚀 基于 Axum + Hyper:使用 Rust 最流行的异步 Web 框架
  • 🔒 TLS/HTTPS 支持:内置 TLS 支持,基于 tokio-rustls
  • 📝 多种日志方案:支持 tracing-subscriber、env_logger、flexi_logger
  • 🎯 优雅关闭:支持 graceful shutdown,确保请求正常处理
  • 🔑 JWT 认证:可选的 JWT 认证中间件
  • 🌐 双栈监听:同时支持 IPv4 和 IPv6
  • 🛡️ 错误处理:统一的错误处理机制
  • 🔧 请求拦截器:可自定义请求拦截逻辑
  • ⏱️ 超时控制:可配置的连接空闲超时

📦 安装

Cargo.toml 中添加依赖:

[dependencies]
axum-bootstrap = "0.1"

📚 示例程序

项目提供了两个完整的示例程序,展示了不同的使用场景:

1. 基础示例 (basic.rs)

基础的 HTTP/HTTPS 服务器示例,包含完整的中间件栈和常用功能:

主要功能:

  • ✅ HTTP/HTTPS 支持
  • ✅ MySQL 数据库集成(可选)
  • ✅ Prometheus 指标收集
  • ✅ CORS、压缩、超时控制
  • ✅ 请求追踪和日志
  • ✅ JSON 数据处理

运行方式:

# HTTP 模式
cargo run --example basic

# HTTPS 模式
cargo run --example basic -- --tls --cert cert.pem --key privkey.pem

# 启用 MySQL 支持
cargo run --example basic --features mysql

2. JWT 认证示例 (jwt.rs)

完整的 JWT 用户认证实现,包含登录、登出和受保护的 API:

主要功能:

  • 🔐 JWT token 生成和验证
  • 🍪 Cookie-based 会话管理
  • 🔒 密码 bcrypt 哈希
  • 🛡️ 受保护的 API 端点
  • 📁 静态文件服务

API 端点:

  • POST /api/login - 用户登录
  • POST /api/logout - 用户登出
  • GET /api/me - 获取当前用户信息(需认证)
  • GET /health - 健康检查

运行方式:

# HTTP 模式
cargo run --example jwt --features jwt -- \
  --username admin \
  --password secret123

# HTTPS 模式
cargo run --example jwt --features jwt -- \
  --username admin \
  --password secret123 \
  --cert cert.pem \
  --key privkey.pem

💡 提示: 所有示例程序都包含详细的代码注释,可以直接查看源码了解实现细节。

功能特性(Features)

# 默认启用 tracing-subscriber 日志
axum-bootstrap = { version = "0.1", features = ["use_tracing_subscriber"] }

# 启用 JWT 认证功能
axum-bootstrap = { version = "0.1", features = ["jwt"] }

# 使用 env_logger
axum-bootstrap = { version = "0.1", features = ["use_env_logger"] }

# 使用 flexi_logger
axum-bootstrap = { version = "0.1", features = ["use_flexi_logger"] }

可用的 features:

  • use_tracing_subscriber(默认):使用 tracing-subscriber 进行日志记录
  • use_env_logger:使用 env_logger 进行日志记录
  • use_flexi_logger:使用 flexi_logger 进行日志记录
  • jwt:启用 JWT 认证功能

工具函数

  • util::format:地址格式化工具
  • util::io:IO 相关工具,包括双栈监听器创建
  • util::json:JSON 处理工具
  • util::tls:TLS 配置工具

📖 API 文档

完整的 API 文档请访问 docs.rs

🛣️ 路线图

当前限制

未来计划

  • 更多中间件示例
  • 性能监控和追踪
  • 更完善的错误处理
  • 数据库连接池管理
  • WebSocket 支持示例

🤝 贡献

欢迎贡献代码!请遵循以下步骤:

  1. Fork 本仓库
  2. 创建特性分支 (git checkout -b feature/AmazingFeature)
  3. 提交更改 (git commit -m 'Add some AmazingFeature')
  4. 推送到分支 (git push origin feature/AmazingFeature)
  5. 开启 Pull Request

📝 许可证

本项目采用 MIT OR Apache-2.0 双重许可。详见 LICENSE 文件。

🙏 致谢

本项目参考和学习了以下项目:

  1. axum serve-with-hyper
  2. axum hyper graceful shutdown
  3. axum anyhow-error-response
  4. axum error-handling

👤 作者

arloor - admin@arloor.com

项目主页:https://github.com/arloor/axum-bootstrap

⭐ Star History

如果这个项目对你有帮助,请给它一个 Star!

Dependencies

~19–45MB
~771K SLoC