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

95 天前
 millet230413

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

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

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

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

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

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

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

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

© 2021 V2EX