nginx 准备工作
依赖环境
1)操作系统
内核为 Linux 2.6
以上,支持 epoll
特性
2)依赖软件
- gcc:编译器
- pcre:解析正则表达式
- zlib:压缩解压
- openssl:支持 TLS/SSL 加密解密
内核参数
默认的 Linux 内核参数考虑的是最通用的场景,这明显不符合用于支持高并发访问 web 服务器的定义。
所以修改 Linux 内核参数,可以使得 nginx 拥有更高的性能。在优化内核时,可以做的事很多,我们通常会根据业务特点来进行调整。
通过 /etc/sysctl.conf
更改内核参数,最常用的配置:
1 | # 进程可以同时打开的最大句柄数,直接限制了最大并发连接数 |
滑动窗口的大小与套接字缓存区在一定程度上影响并发连接的数目;每个 tcp 连接都会为维护 tcp 滑动窗口而消耗内存,这个窗口会根据服务器的处理速度收缩或扩张;
参数
wmem_max
的设置,需要平衡物理内存的总大小、nginx 并发处理的最大连接数量(worker_processes 和 worker_connections 参数共同决定)而确定;
关于代码
代码下载
nginx 代码可以从官方 页面 下载。如果希望下载其它旧的版本,可以直接通过 下载目录 来找对应版本的代码包。
除了官方网站下载地址外,在 github 上也可以下载对应的代码,只不过 github 上是只读仓库,也就是说你不能通过 PR 方式在 github 上贡献代码。
代码版本
nginx 版本分为主线版本、稳定版本、老旧版本。
- 主线版本(Mainline version):为最新版本,包含最新的特性;
- 稳定版本(Stable version):经历过生产环境实际验证的,稳定性相对是有保证的;
- 老旧版本(Legacy versions):一般不建议使用,建议使用稳定版本;
当前(2024.04.06)最新版本为 1.25.4
,最新稳定版本为 1.24.0
。
不同分支
由于 nginx 的丰富特性、高性能、稳定性、易扩展等优点,应用非常广泛,且出现了几个重要的分支
- nginx 官方
- openresty(章亦春)
- tengine(淘宝)
- 其它 …
我们当前只需要关心 nginx 官方即可
代码贡献
由于历史原因,当前 nginx 官方的开发流程并非基于 github,也就是说你无法通过 PR 方式来参与 nginx 开源代码的贡献,当前仍然使用邮件列表的方式,具体方式参考官方说明。