一、环境准备与依赖安装
1.1 系统环境检查
在CentOS 7/8系统上部署Nginx前,需确认系统满足以下条件:
- 内存建议≥512MB(生产环境建议≥2GB)
- 磁盘空间≥500MB(包含日志存储需求)
- 确保当前用户具有sudo权限
- 网络连接正常(用于下载依赖包)
1.2 基础依赖安装
通过yum包管理器安装编译工具链和运行时依赖:
sudo yum install -y epel-releasesudo yum groupinstall -y "Development Tools"sudo yum install -y \pcre-devel zlib-devel openssl-devel \brotli-devel libxslt-devel gd-devel \perl-devel perl-ExtUtils-Embed
关键组件说明:
- pcre-devel:正则表达式支持库
- openssl-devel:SSL/TLS加密通信支持
- brotli-devel:现代压缩算法支持(比gzip压缩率提升20-26%)
- gd-devel:图片处理模块依赖
二、Nginx源码编译安装
2.1 下载源码与模块
创建专用目录结构并获取最新稳定版源码:
mkdir -p /usr/local/src/{nginx,modules}cd /usr/local/src/modules# 获取Brotli动态压缩模块(推荐使用国内镜像)git clone --depth 1 https://gitee.com/mirrors/ngx_brotli.gitcd ngx_brotligit submodule update --init --recursive# 下载Nginx主程序(示例版本1.25.3)cd ../nginxwget http://nginx.org/download/nginx-1.25.3.tar.gztar zxvf nginx-1.25.3.tar.gzcd nginx-1.25.3
2.2 核心编译参数配置
推荐生产环境编译参数配置:
./configure \--prefix=/usr/local/nginx \--sbin-path=/usr/sbin/nginx \--conf-path=/etc/nginx/nginx.conf \--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-http_ssl_module \ # SSL支持--with-http_v2_module \ # HTTP/2协议--with-http_realip_module \ # 真实IP获取--with-http_stub_status_module \ # 状态监控--with-http_gzip_static_module \ # 预压缩文件支持--with-http_brotli_module \ # Brotli压缩(需配合ngx_brotli)--with-threads \ # 多线程支持--with-file-aio \ # 异步文件IO# 第三方模块集成--add-module=/usr/local/src/modules/ngx_brotli
参数配置深度解析:
- 路径参数:统一将关键文件存放至系统标准路径,便于日志收集工具(如ELK)统一管理
- 协议支持:同时启用HTTP/2和SSL可提升网站安全性与性能(Chrome浏览器已默认要求HTTPS)
- 压缩优化:Brotli压缩在文本内容上比gzip有显著优势,但需注意:
- 仅对静态资源启用(动态内容压缩会增加CPU负载)
- 推荐压缩级别设置在4-6之间(平衡压缩率与CPU占用)
2.3 编译安装与验证
执行编译安装并验证安装结果:
make -j$(nproc) && sudo make install# 验证安装/usr/sbin/nginx -V 2>&1 | grep -E 'brotli|ssl|http2'
三、服务管理与配置
3.1 创建Systemd服务单元
创建/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
3.2 基础配置示例
编辑/etc/nginx/nginx.conf主配置文件:
worker_processes auto;worker_rlimit_nofile 65535;events {use epoll;worker_connections 4096;}http {include /etc/nginx/mime.types;default_type application/octet-stream;# 日志格式优化log_format main '$remote_addr - $remote_user [$time_local] "$request" ''$status $body_bytes_sent "$http_referer" ''"$http_user_agent" "$http_x_forwarded_for"';# 压缩配置brotli on;brotli_comp_level 6;brotli_types text/plain text/css application/json application/javascript text/xml;# 虚拟主机配置server {listen 80;server_name example.com;location / {root /usr/share/nginx/html;index index.html index.htm;}}}
四、卸载与清理流程
4.1 完整卸载步骤
-
停止服务:
sudo systemctl stop nginxsudo systemctl disable nginx
-
删除服务单元文件:
sudo rm -f /etc/systemd/system/nginx.servicesudo systemctl daemon-reload
-
卸载二进制文件与配置:
sudo rm -rf /usr/sbin/nginx \/etc/nginx \/usr/local/nginx \/var/run/nginx.pid \/var/log/nginx
-
清理依赖包(可选):
sudo yum remove -y nginx* pcre-devel zlib-devel openssl-devel
4.2 残留文件检查
建议执行以下命令彻底清理:
find / -name "*nginx*" -type f -exec rm -f {} \; 2>/dev/null
五、生产环境优化建议
-
性能调优:
- 根据CPU核心数设置
worker_processes - 调整
worker_connections值(通常设为ulimit -n的80%) - 启用
aio和sendfile提升静态文件处理能力
- 根据CPU核心数设置
-
安全加固:
- 禁用服务器版本信息显示(
server_tokens off) - 限制访问日志记录敏感信息
- 定期更新Nginx版本修补安全漏洞
- 禁用服务器版本信息显示(
-
监控集成:
- 配置Prometheus监控端点
- 集成日志分析系统(如EFK栈)
- 设置告警规则监控关键指标(5xx错误率、响应时间等)
通过标准化部署流程和参数配置,可确保Nginx服务器在CentOS环境下稳定运行。建议结合具体业务需求进行参数调优,并建立定期维护机制保障服务可靠性。