nginx采用autotools标准流程:先运行./configure生成适配环境的makefile,再用make调用编译器编译源码,最后sudo make install安装;需预先安装build-essential、libssl-dev、zlib1g-dev、libpcre3-dev等依赖。

Nginx 本身不使用 make 命令直接编译源码,它依赖的是 configure + make + make install 这一套标准的 Autotools 构建流程。所谓“通过 Make 编译”,实际是指在执行完 ./configure 生成 Makefile 后,再用 make 来调用编译器完成编译。
确认已安装必要编译工具和依赖库
在运行 make 前,必须确保系统有基础编译环境和 Nginx 所需的开发库:
- 安装 GCC、make、perl、libtool 等构建工具(如 Ubuntu/Debian:`sudo apt-get install build-essential perl libperl-dev libssl-dev zlib1g-dev libpcre3-dev`)
- 若启用 HTTP/2、TLS 1.3 或动态模块,还需 `libopenssl-dev`(或 `openssl-devel`)、`zlib-dev`、`pcre-dev` 等对应开发包
- 检查 OpenSSL 版本是否满足要求(Nginx 1.25+ 推荐 OpenSSL 1.1.1 或更高)
执行 configure 生成 Makefile
./configure 是关键前置步骤,它检测系统环境、解析参数、生成适配当前系统的 Makefile。例如:
./configure \ --prefix=/usr/local/nginx \ --with-http_ssl_module \ --with-http_v2_module \ --with-http_gzip_static_module \ --with-pcre \ --with-openssl=../openssl-1.1.1w
注意:
- 路径需为绝对路径或相对于当前目录的正确相对路径
- 若使用第三方模块(如 echo-nginx-module),需加 --add-dynamic-module=../echo-nginx-module
- 成功执行后会输出 Configuration summary,并生成 objs/Makefile
用 make 编译源码
生成 Makefile 后,直接运行:
-
make:默认编译所有目标(即 nginx 可执行文件和模块) -
make -j$(nproc):启用多核并行编译,加快速度(推荐) -
make modules:仅编译动态模块(需先成功执行过make) - 编译产物默认放在
objs/目录下:objs/nginx是主程序,objs/ngx_http_echo_module.so是动态模块(如果启用了)
安装与验证
编译完成后,用 make install 将文件复制到 --prefix 指定的目录:
-
sudo make install(需要写入权限) - 安装后检查:
/usr/local/nginx/sbin/nginx -t测试配置,-v查版本,-V查详细编译参数 - 若只想编译不安装,可直接运行
objs/nginx测试,无需安装
不复杂但容易忽略:configure 必须成功,否则 make 会报错找不到规则;每次修改 configure 参数都要重新运行 configure,不能直接 make clean 后就 make(除非 configure 已存在且未改动)。











