【Rust日报】用Axum替换Nginx

科技   2024-10-18 14:43   加拿大  

用Axum替换Nginx

文章首先简单介绍了Axum的基本用法,如何创建路由、处理器等。然后展示了如何使用Axum托管一个简单的静态网站,只需几行代码。

接着,文章阐述了如何使用Axum托管两个不同子域名的静态网站,通过解析主机名来路由到不同的服务。代码通过判断是否提供"--production"参数来决定使用实际域名还是本地测试域名。

最后,作者将路由逻辑抽取到一个单独函数中,使main函数更加清晰,并使用BoxCloneService来简化Service trait的使用。

总的来说,这篇文章向读者展示了如何使用Axum框架编写功能丰富但代码简洁的Web服务,以替代配置复杂的Nginx反向代理。Axum利用Rust的高性能特性,同时提供了清晰直观的API,是构建Web服务的不错选择。

https://felix-knorr.net/posts/2024-10-13-replacing-nginx-with-axum.html

Clavis - 在异步流上进行安全加密通信

Clavis是一个Rust库,用于在异步流上进行安全加密通信。它利用X25519进行密钥交换,AES-256-GCM-SIV进行加密,确保传输数据的机密性和完整性,同时提供简单高效的API。

该库提供了定义自定义数据包类型的宏,支持无缝的数据序列化和反序列化。它展示了如何建立客户端和服务器之间的加密连接,发送和接收自定义数据包。该库提供了完整的API文档,涵盖了各种模块、结构体和函数,以充分利用Clavis的功能。该项目遵循MIT许可协议。

https://github.com/pyrohost/clavis

如何在嵌入式系统上运行 Rust 代码

本文是一个三部分系列的最后一篇,旨在讲解如何在嵌入式系统上运行 Rust 代码。作者通过将自己的 range-set-blaze 项目移植到 no_std 环境的实践,总结出了9条规则:

  1. 确保你的项目可以在 WASM WASI 和浏览器 WASM 环境下运行,因为这些环境与嵌入式环境有类似的约束。
  2. 使用 thumbv7m-none-eabi 目标和 cargo tree 命令来识别并修复不兼容 no_std 的依赖项。
  3. 在主代码中添加 #![no_std] 和 extern crate alloc;,并将 std:: 替换为 core:: 和 alloc::。
  4. 使用 Cargo 特性让主代码有条件地使用 std,以保留文件相关等功能。
  5. 理解测试代码始终使用标准库的原因。
  6. 创建一个简单的嵌入式测试项目。
  7. 使用 QEMU 运行测试。
  8. 在 Cargo.toml 中为 WASM 和 no_std 添加关键词和类别。
  9. 可选地使用预分配的数据类型避免使用 alloc。
  10. 在持续集成测试中添加 thumbv7m-none-eabi 和 QEMU 目标。

通过遵循这些规则,开发者可以顺利地将 Rust 代码移植到资源受限的嵌入式系统中运行。

https://medium.com/towards-data-science/nine-rules-for-running-rust-on-embedded-systems-b0c247ee877e

--

From 日报小组 Mike

社区学习交流平台订阅:

  • Rustcc论坛: 支持rss
  • 微信公众号:Rust语言中文社区


Rust语言中文社区
Rust官方及社区最新信息搜集、文章推送,教程学习,技巧分享,社区交流。信息来源是整个全球Rust社区。
 最新文章