从 Nginx 转型至OpenNJet 使用心得

🙈 By 用户投稿 2024-12-12

img


我们公司专注于代理业务,在技术探索的道路上,曾长期依赖 Nginx 作为核心工具。然而,随着业务的拓展与技术需求的演进,Nginx 逐渐显露出其局限性。

以往,我们不得不借助 OpenResty 与 Nginx 相结合,并引入第三方包进行打包处理,但即便如此,打包后的 Nginx 仍无法支持 HTTP3 协议。这一缺陷在实际的无感转发和代理工作中引发了诸多棘手问题,例如在访问某些网站时,常常遭遇拦截与校验,导致访问失败,业务推进频频受阻。

就在此时,OpenNJet 映入我们的眼帘,它对 HTTP/3 协议的原生支持犹如一道曙光,让我们看到了解决问题的希望。在搭建代理服务的实践过程中,HTTP/3 的强大特性得以充分展现,数据传输不仅稳定高效,而且采用透明转发方式,极大地优化了代理服务的整体效率与稳定性,为我们的网络架构注入了一股强劲动力,使之能够更加流畅地运转。

OpenNJet 内置的 Lua 语言更是为我们打开了一扇通往个性化定制的大门。通过编写 Lua 脚本,我们能够依据项目的独特需求,深度调整业务逻辑,轻松实现各种别具一格的功能,真正做到了让技术贴合业务,而非让业务迁就技术。

当然,在使用 OpenNJet 的过程中,我们也并非一帆风顺。

1, 首先是 sub_filter 的设置问题,其初始默认值 255 ,严重束缚了部分功能的发挥。经过与 OpenNJet 研发团队的积极沟通与反馈,他们迅速响应并协助我们将该值调整为 500 多。这个数字变化,却带来了功能处理效率的大幅提升,让系统能够更加自如地应对复杂任务。


2, 另一个问题是 cache 缓存问题。在测试初期,一切都没问题,但运行四五天后,系统突然报错,并产生大量 core 文件,在与 OpenNJet 团队的紧密协作下,全力排查问题根源,最终成功找到解决方案并进行了系统更新。


img


自此之后,类似问题再也没有出现,生产服务器的稳定性得到了极大保障,如今,我们已将 OpenNJet 全面部署到线上生产环境,每天都有上万人同时在线使用,这无疑是对其稳定性与性能的严苛考验。

值得庆幸的是,自版本更新以来,OpenNJet 展现出了卓越的可靠性,故障与异常情况极少发生。这不仅为我们的业务运营提供了坚实的保障,让各项业务得以顺利推进,也为用户带来了优质、稳定的服务体验,赢得了用户的信赖与好评。

在此,我要衷心感谢NJet的架构师。在整个 OpenNJet 的应用之旅中,每当遇到各种复杂难题,凭借其深厚的技术功底与丰富的实践经验,他们一次次找到问题的关键所在,并提供切实可行的解决方案。

可以毫不夸张地说,如果没有架构师们的鼎力相助,我们很难在如此短的时间内让 OpenNJet 在项目中大放异彩,实现如此出色的应用效果,在未来的项目中,希望OpenNJet 将继续发挥其独特优势,为我们团队创造更多的价值,助力我们在技术创新的道路上不断前行,攀登更高的业务巅峰。

参与项目

NJet 主要以 NGINX 1.23.1 开源版本为基础,进行内核重构、安全加固、功能增强开发,形成自主可控的 NJet 云原生应用引擎,实现 NGINX 不具备的在云原生架构下提供东西向流量控制能力、增加国密算法的 SSL 通信能力、兼容 Kubernetes 容器编排和 Istio 服务治理框架,具体包括:内核重构(运行时动态配置加载能力:Location、证书、Server 动态加载等)、安全加固(HTTP3 协议国密算法支持、RSA/国密自适应双证书体系认证、RSA/国密双证书吊销列表管理等)、功能增强(包括透明流量劫持、故障注入、高性能遥测、多协议自动适配与代理、WASM 支持模块等)。

官网:njet.org.cn