一、环境准备与依赖安装
1.1 基础开发工具链配置
在CentOS/RHEL系统上部署Nginx前,需先构建完整的开发环境。推荐使用yum包管理器安装核心依赖:
sudo yum install -y epel-releasesudo yum groupinstall -y "Development Tools"sudo yum install -y wget git pcre-devel zlib-devel openssl-devel
其中Development Tools组包含gcc、make等基础工具,pcre-devel和zlib-devel分别提供正则表达式支持与数据压缩功能,openssl-devel则是HTTPS服务必需的加密库。
1.2 性能优化模块预装
对于追求极致性能的场景,建议额外安装Brotli压缩模块:
sudo yum install -y brotli-devel
该模块相比传统gzip压缩可提升15-20%的压缩率,特别适合传输文本类资源。如需使用国内镜像加速模块下载,可配置git代理或手动下载源码。
二、源码编译安装流程
2.1 模块源码获取与处理
推荐采用独立目录管理第三方模块:
mkdir -p /opt/nginx-modulescd /opt/nginx-modulesgit clone https://github.com/google/ngx_brotli.gitcd ngx_brotli# 使用国内镜像加速子模块sed -i 's|https://github.com/google/brotli.git|https://gitee.com/mirrors/brotli.git|' .gitmodulesgit submodule update --init --recursive
此操作可避免因网络问题导致的子模块下载失败,特别适合内网环境部署。
2.2 主程序源码获取与验证
建议从官方渠道下载稳定版本源码包,并通过校验确保完整性:
cd /opt/srcwget http://nginx.org/download/nginx-1.25.3.tar.gztar zxvf nginx-1.25.3.tar.gzcd nginx-1.25.3
生产环境建议选择LTS版本,当前1.25.x系列提供HTTP/3等新特性支持。
2.3 编译参数深度配置
核心配置参数应兼顾功能与安全:
./configure \--prefix=/usr/local/nginx \--sbin-path=/usr/sbin/nginx \--conf-path=/etc/nginx/nginx.conf \--modules-path=/usr/lib64/nginx/modules \--error-log-path=/var/log/nginx/error.log \--http-log-path=/var/log/nginx/access.log \--pid-path=/var/run/nginx.pid \--lock-path=/var/run/nginx.lock \--with-threads \--with-file-aio \--with-http_ssl_module \--with-http_v2_module \--with-http_realip_module \--with-http_stub_status_module \--with-http_gzip_static_module \--add-module=/opt/nginx-modules/ngx_brotli
关键参数说明:
with-threads:启用线程池,提升静态文件处理能力file-aio:支持异步文件I/O,降低磁盘I/O等待realip_module:必备模块,用于获取真实客户端IP(如CDN场景)stub_status_module:提供基础监控接口,便于集成监控系统
2.4 编译安装与验证
执行编译安装后需验证服务状态:
make -j$(nproc) && sudo make installsudo /usr/sbin/nginx -t
使用-j参数指定CPU核心数可加速编译过程,测试命令nginx -t可检查配置文件语法正确性。
三、生产环境优化配置
3.1 系统参数调优
在/etc/sysctl.conf中添加:
net.ipv4.tcp_max_syn_backlog = 65536net.core.somaxconn = 65535net.ipv4.tcp_tw_reuse = 1
执行sysctl -p使配置生效,这些参数可提升高并发场景下的连接处理能力。
3.2 进程管理配置
建议使用systemd管理Nginx进程,创建/etc/systemd/system/nginx.service:
[Unit]Description=The nginx HTTP and reverse proxy serverAfter=network.target[Service]Type=forkingPIDFile=/var/run/nginx.pidExecStartPre=/usr/sbin/nginx -tExecStart=/usr/sbin/nginxExecReload=/usr/sbin/nginx -s reloadExecStop=/bin/kill -s QUIT $MAINPIDPrivateTmp=true[Install]WantedBy=multi-user.target
此配置提供进程隔离、优雅重启等功能,特别适合容器化部署场景。
四、模块扩展与管理
4.1 动态模块加载
1.25+版本支持动态模块机制,编译时添加--with-compat参数后,可通过:
sudo nginx -tsudo nginx -s reload
实现模块热加载,无需重启服务。动态模块应放置在modules-path指定目录。
4.2 模块卸载流程
如需移除模块,需重新编译:
- 备份当前配置文件
- 执行
make clean清理旧编译结果 - 移除
configure中的对应模块参数 - 重新编译安装
五、完整卸载流程
5.1 服务停止与文件清理
sudo systemctl stop nginxsudo rm -rf /usr/local/nginx /etc/nginx /var/run/nginx.pidsudo yum remove nginx* # 移除可能存在的rpm包
5.2 依赖清理建议
保留基础开发工具链,仅移除特定版本依赖:
sudo yum autoremove pcre-devel zlib-devel openssl-devel
六、常见问题解决方案
6.1 端口冲突处理
当80端口被占用时,可通过以下方式排查:
sudo netstat -tulnp | grep :80# 或使用ss命令sudo ss -tulnp | grep :80
找到占用进程后,可选择修改Nginx监听端口或停止冲突服务。
6.2 模块编译失败处理
若出现make: *** [build] Error 2等错误,建议:
- 检查依赖是否完整安装
- 确认模块版本与Nginx主版本兼容
- 查看
objs/Makefile中的具体错误信息 - 在官方社区或GitHub仓库搜索类似问题
本指南完整覆盖了从环境准备到生产部署的全流程,特别针对企业级场景提供了性能优化建议和故障排查方案。通过理解每个配置参数的作用,运维人员可根据实际需求定制部署方案,构建高可用、高性能的Web服务平台。