Nginx 编译安装需按业务精准裁剪模块、正确配置路径与依赖。必须安装基础编译工具和库,显式指定 prefix 及 conf、pid、log 路径,启用 ssl、v2、realip、stub_status 等核心模块,升级时复用 nginx -V 查得的原始参数。

直接上手装 Nginx,关键不是“怎么装”,而是“为什么这么装”。编译参数不是堆功能,而是按需裁剪、精准匹配业务场景。选错路径或漏掉关键模块,轻则启动失败,重则 HTTPS 不生效、真实 IP 拿不到、热重载卡死。
基础依赖必须一步到位
没装对依赖,configure 就会报错,比如 “checking for PCRE library ... not found” 或 “OpenSSL is not found”。这不是 Nginx 的问题,是系统缺库:
- CentOS/RHEL:运行
yum install -y gcc pcre-devel zlib-devel openssl-devel - Ubuntu/Debian:运行
apt update && apt install -y build-essential libpcre3-dev zlib1g-dev libssl-dev - 别跳过
gcc和build-essential—— 没编译器,源码根本跑不起来
路径参数决定运行根基
–prefix 是所有路径的起点,其他路径(如 conf、logs、pid)都默认从它推导。生产环境建议显式指定,避免后续找不到配置或写不了日志:
-
--prefix=/usr/local/nginx:统一安装根目录,推荐保持默认习惯 -
--conf-path=/usr/local/nginx/conf/nginx.conf:强制主配置位置,防止nginx -t找错文件 -
--pid-path=/var/run/nginx.pid:放 /var/run 下更符合 systemd 管理规范,确保nginx -s reload可执行 -
--error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log:日志路径独立设定,方便配合 logrotate 做轮转
模块开关要跟着业务走
不是所有模块都要开,但核心能力不能缺。以下组合覆盖绝大多数线上需求:
-
--with-http_ssl_module:HTTPS 必开,否则listen 443 ssl直接报错 -
--with-http_v2_module:HTTP/2 需搭配 SSL 模块,且 OpenSSL 版本 ≥1.0.2(CentOS 7 默认满足) -
--with-http_realip_module:CDN 或负载均衡后获取真实客户端 IP,配合set_real_ip_from使用 -
--with-http_stub_status_module:暴露/nginx_status接口,用于监控指标采集 -
--with-stream和--with-stream_ssl_module:需要四层代理(如 TCP 转发、MySQL 代理)时启用
升级务必复用旧参数
升级不是重装。用 nginx -V 查出当前所有编译参数,原样复制进新版本 configure 命令里。自己凭印象补参数,极大概率导致模块缺失或路径错乱:
- 执行
/usr/local/nginx/sbin/nginx -V 2>&1 | grep "configure arguments" - 把输出的完整参数串粘贴过来,只改版本号和新增必要模块(如加
--with-threads) - 确认输出 “Configuration successful” 后再
make && make install
不复杂但容易忽略


















