Cloudflare 使用 Rust 重写 Nginx C 模块,目标是“去 Nginx”


去年曾报道过,Cloudflare 将 Nginx 替换为内部采用 Rust 编写的 Pingora,目标是构建一个更快、更高效、更通用的内部代理,用作 Cloudflare 当前和未来产品的平台。不过 Cloudflare 的基础设施非常庞大,并且包含许多不同的服务。

近日,Cloudflare 工程师介绍了如何使用 Rust 重写基于 C 语言的 Nginx 模块。Cloudflare 工程师在博客写道,他们用 Rust 为 Cloudflare 基础设施中最古老和最不为人所知的部分——cf-html,编写了替代品。这是一个 Nginx 模块,位于 Cloudflare 的核心反向 Web 代理内部,亦称为 FL (Front Line)。

FL 运行着 Cloudflare 应用程序服务的大部分逻辑,因此这次替换无疑更具挑战性。Cloudflare 称,完成这项工作为他们完全摆脱 Nginx 铺平了道路。未来他们会继续逐步更换用于运行 Nginx/OpenResty 代理的组件,或者无需对自研平台投入大量开发资源就可以完成的组件,从而构建一个没有 Nginx 的未来 (A future without NGINX)。

Cloudflare 工程师非常热爱 Rust 语言,他们最后谈到了 Rust 带来的好处:“大多数人认为编程语言的安全性主要是用于预防出现 bug,但对于一家公司来说,我们发现编程语言的安全优势还可以用来完成一些被认为非常困难、或不可能安全实现的功能需求。比如提供类似 Wireshark 的过滤语言来编写防火墙规则、允许数百万用户编写任意 JavaScript 代码并直接在我们的平台上运行它,以及即时重写 HTML 响应。在实现上述功能过程中,Rust 为这些服务提供了严格的执行边界,让不可能变成可能。与此同时,Rust 让过去困扰行业的内存安全问题日益成为过去。”


相關推薦

2023-03-03

p;2023 年采用 Rust 重写的案例越来越多,可延伸阅读: Cloudflare 使用 Rust 重写 Nginx C 模块,目标是“去 Nginx” Mesa Vulkan 驱动探索采用 Rust 重写 Fish Shell 计划采用 Rust 重写    

2022-09-17

长期以来,Cloudflare 一直依赖 Nginx 作为其 HTTP 代理堆栈的一部分;但现在,他们宣布已将 Nginx 替换为其内部由 Rust 编写的 Pingora 软件,“我们已经建立了一个更快、更高效、更通用的内部代理,作为我们当前和未来产品的平台

2022-09-21

有意外的话 Rust 将在 6.1 版本进入 Linux 内核 Cloudflare 放弃 Nginx,使用内部 Rust 编写的 Pingora GStreamer 准备将 Rust 编写的插件作为其官方二进制版本的一部分发布 Rust 成立专门的安全团队 Asahi Linux 计划使用 Rust 编

2023-02-05

Collabora 的 Faith Ekstrand 近日发文,介绍了有关考虑使用 Rust 重写 Mesa Vulkan 驱动的工作。这项工作的设计目标包括让 Rust Vulkan 驱动封装尽可能 clean 和“Rust-like”、跟踪可变性和生命周期,并尽可能使用 Vulkan allocators。 目前,Mes

2023-04-29

系统内核。"在接下来的几周或几个月内,你将在内核中使用 Rust 启动 Windows,这真的很酷。这里的基本目标是将其中一些内部的 C++ 数据类型转换为其 Rust 等价物。" Windows 的 Rust 革新始于 2020 年的 DWriteCore,它是 Windows 的 DWrite

2023-05-05

据介绍,Prossimo 选择的软件会重点关注以下方面: 使用非常广泛(几乎每个服务器/客户端都在使用) 位于临界边界 执行关键功能 是否使用了内存不安全的语言编写(例如 C、C++、asm) 而 sudo 刚好满足了上面的情况

2023-03-21

项目,近日,其团队发博客称将要将 Rust 引入 Xen 项目,使用 Rust 重写一些 Xen 组件。 Xen 是由剑桥大学开发的 x86 开源虚拟机监控器 (VMM),支持在单个机器上高性能地虚拟化多个操作系统。 XCP 项目的整个平台包含许多不

2023-08-31

acOS 以及 GNU/Linux,该计算机程序可以让用户以安全的方式使用特定的权限执行程序(通常为操作系统的超级用户)。 它最早开发于 1980 年代。几十年来,sudo 已成为执行更改同时最大程度降低操作系统风险的重要工具。 但因

2022-09-30

broker 的硬件抽象层(HAL),本身是用 Elixir 编写的;但他使用 Rust 和 async Futures 完成了这个任务。“这也是一个很大的确认,这确实是有用的东西。所有的东西从一开始就很有效”。 之后,他和具有同样抱负的 Nikolaos Korkakakis

2023-02-02

的跨度内,逐步地将逐个模块从 C++ 转换为 Rust。他们将使用 FFI,以便 Rust 和 C++ 位可以相互通信,直到 C++ 消失,并且测试和 CI 在每次提交时会继续保持通过。 为了证明“Rust 重写计划”可以执行,在这个 PR 中,作者将 FLOG、

2022-10-24

e)非常适合为下一代无服务器平台提供动力。SecondState、Cloudflare、Netlify和Vercel等公司都支持通过其边缘运行时部署WebAssembly功能。其他公司如Grafbase正在使用Wasm,使开发者能够在边缘用他们选择的语言编写和部署GraphQL解析器。

2023-07-18

试版 (Insider Preview Build 25905)。 发布公告提到此版本已经使用 Rust 重写 Windows 11 内核中的部分模块。 据介绍,该预览版使用 safe Rust 对关键内核功能进行了早期实现。具体来说,win32kbase_rs.sys 包含 Windows GDI region 的新实

2022-09-30

2021 年,谷歌称 AOSP (Android Open Source Project) 现已支持使用 Rust 开发 Android 操作系统(Android 也属于 Linux 发行版)。 2021 年,Linus 再度发表自己对 Linux 内核支持 Rust 的看法,他对此持观望和开放的态度,并表示 Rust 的首要目

2024-08-12

洁,可保存至文件或etcd 支持10多个Prometheus指标,可以使用pull与push的形式收集相关指标 Opentelemetry支持w3c context trace与jaeger trace的形式 频繁更新的Upstream与Location相关配置调整准实时生效(30秒),其它应用配置更新后,无中断