我想到了一个学习 nginx 的方式,嘿嘿嘿嘿

2024-02-15 12:14:01 +08:00
 millet230413

目前的工作在搞 openresty / nginx 这块,产品稳定,需求也很小,都是改一些配置和 lua 脚本,空闲时候比较多。想系统的学习一下 openresty / nginx ,看了一些书、文章和视频。然后读源码,画流程图、活动图、状态图。于是产生了用 golang 把 nignx 重写一遍想法,主要用于学习。

6140 次点击
所在节点    程序员
36 条回复
realJamespond
2024-02-15 18:48:15 +08:00
nginx 最大特点就是自己搞了一套内存池吧,用 golang 和 rust 没必要搞这个了,其他都差不多都是调 epoll
chesha1
2024-02-15 19:43:57 +08:00
cloudflare 不是用 rust 重写了一个自己内部的 nginx 吗?这种需求用 rust 确实更好
vincent7245
2024-02-15 19:55:00 +08:00
我也觉得 rust 更好,自从学会了 rust 我看到啥都想用 rust 重写一个
pastel
2024-02-15 21:51:56 +08:00
这个工程量是不是太大
tool2d
2024-02-15 21:57:58 +08:00
我也写过类似的网站服务器,运行效率很低。

主要能学到一些知识,比如 SSL 详细的握手流程,加密流程,还有签名认证之类的。
YsHaNg
2024-02-15 22:59:35 +08:00
YUX
2024-02-15 23:19:40 +08:00
看了楼上的发言,感觉又可以入门 rust 了
HaroldFinchNYC
2024-02-16 01:38:20 +08:00
@tool2d 要是运行效率很高,你就可以卖钱了
kkk9
2024-02-16 08:31:50 +08:00
😅 nginx 通过社区贡献已经基本优化到最佳了,除非是有特定需求,如 aws 网关、cf 节点内联,不然怎么样也不会超越 ngx 的
kkk9
2024-02-16 08:34:48 +08:00
没打完又给回了……

学习思路换一个,试着写一个 ngx 模块插件,或者 如 @tool2d #25 学习其他知识,@lesismal #19 手撸 epoll 学习。这样比较实际
gowk
2024-02-16 10:33:44 +08:00
millet230413
2024-02-16 11:22:24 +08:00
呃,看了大家的回复,可能是误解了我的初衷,我并不是想要复制一个这样的产品(事实上已经有类似 nginx 这样优秀的网关产品了,比如上面大家说的 caddy ),我是想通过这种方式来学习 nginx ,学习里面的设计思想(这么优秀的产品肯定有很多很多值得学习的地方),学习处理请求的各个阶段和流程(把一个请求合理的划分成多个阶段,这种工程思维本身就有很多值得学习的地方),学习里面的网络知识(肯定有很多我未知的盲点在里面)。
ingramyang
2024-02-16 18:11:48 +08:00
有那个时间还不如去看 caddy 的源码
wws2023
2024-02-16 19:31:53 +08:00
学着学着发现 nginx 很多功能都是加模块的
deorth
2024-02-17 10:37:00 +08:00
道理我都懂,可是为什么 nginx 不支持 abstract unix socket
julyclyde
2024-02-18 13:23:26 +08:00
我觉得你 *仅仅是* 想学 golang 而已
这事看起来和 nginx 没啥关系

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1015701

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX