CentOS环境下Nginx部署全流程:从安装到卸载的完整指南

一、环境准备与依赖安装

1.1 系统环境检查

在CentOS 7/8系统上部署Nginx前,需确认系统满足以下条件:

  • 内存建议≥512MB(生产环境建议≥2GB)
  • 磁盘空间≥500MB(包含日志存储需求)
  • 确保当前用户具有sudo权限
  • 网络连接正常(用于下载依赖包)

1.2 基础依赖安装

通过yum包管理器安装编译工具链和运行时依赖:

  1. sudo yum install -y epel-release
  2. sudo yum groupinstall -y "Development Tools"
  3. sudo yum install -y \
  4. pcre-devel zlib-devel openssl-devel \
  5. brotli-devel libxslt-devel gd-devel \
  6. perl-devel perl-ExtUtils-Embed

关键组件说明:

  • pcre-devel:正则表达式支持库
  • openssl-devel:SSL/TLS加密通信支持
  • brotli-devel:现代压缩算法支持(比gzip压缩率提升20-26%)
  • gd-devel:图片处理模块依赖

二、Nginx源码编译安装

2.1 下载源码与模块

创建专用目录结构并获取最新稳定版源码:

  1. mkdir -p /usr/local/src/{nginx,modules}
  2. cd /usr/local/src/modules
  3. # 获取Brotli动态压缩模块(推荐使用国内镜像)
  4. git clone --depth 1 https://gitee.com/mirrors/ngx_brotli.git
  5. cd ngx_brotli
  6. git submodule update --init --recursive
  7. # 下载Nginx主程序(示例版本1.25.3)
  8. cd ../nginx
  9. wget http://nginx.org/download/nginx-1.25.3.tar.gz
  10. tar zxvf nginx-1.25.3.tar.gz
  11. cd nginx-1.25.3

2.2 核心编译参数配置

推荐生产环境编译参数配置:

  1. ./configure \
  2. --prefix=/usr/local/nginx \
  3. --sbin-path=/usr/sbin/nginx \
  4. --conf-path=/etc/nginx/nginx.conf \
  5. --error-log-path=/var/log/nginx/error.log \
  6. --http-log-path=/var/log/nginx/access.log \
  7. --pid-path=/var/run/nginx.pid \
  8. --lock-path=/var/run/nginx.lock \
  9. # 核心功能模块
  10. --with-http_ssl_module \ # SSL支持
  11. --with-http_v2_module \ # HTTP/2协议
  12. --with-http_realip_module \ # 真实IP获取
  13. --with-http_stub_status_module \ # 状态监控
  14. --with-http_gzip_static_module \ # 预压缩文件支持
  15. --with-http_brotli_module \ # Brotli压缩(需配合ngx_brotli)
  16. --with-threads \ # 多线程支持
  17. --with-file-aio \ # 异步文件IO
  18. # 第三方模块集成
  19. --add-module=/usr/local/src/modules/ngx_brotli

参数配置深度解析:

  1. 路径参数:统一将关键文件存放至系统标准路径,便于日志收集工具(如ELK)统一管理
  2. 协议支持:同时启用HTTP/2和SSL可提升网站安全性与性能(Chrome浏览器已默认要求HTTPS)
  3. 压缩优化:Brotli压缩在文本内容上比gzip有显著优势,但需注意:
    • 仅对静态资源启用(动态内容压缩会增加CPU负载)
    • 推荐压缩级别设置在4-6之间(平衡压缩率与CPU占用)

2.3 编译安装与验证

执行编译安装并验证安装结果:

  1. make -j$(nproc) && sudo make install
  2. # 验证安装
  3. /usr/sbin/nginx -V 2>&1 | grep -E 'brotli|ssl|http2'

三、服务管理与配置

3.1 创建Systemd服务单元

创建/etc/systemd/system/nginx.service文件:

  1. [Unit]
  2. Description=The nginx HTTP and reverse proxy server
  3. After=network.target
  4. [Service]
  5. Type=forking
  6. PIDFile=/var/run/nginx.pid
  7. ExecStartPre=/usr/sbin/nginx -t
  8. ExecStart=/usr/sbin/nginx
  9. ExecReload=/usr/sbin/nginx -s reload
  10. ExecStop=/bin/kill -s QUIT $MAINPID
  11. PrivateTmp=true
  12. [Install]
  13. WantedBy=multi-user.target

3.2 基础配置示例

编辑/etc/nginx/nginx.conf主配置文件:

  1. worker_processes auto;
  2. worker_rlimit_nofile 65535;
  3. events {
  4. use epoll;
  5. worker_connections 4096;
  6. }
  7. http {
  8. include /etc/nginx/mime.types;
  9. default_type application/octet-stream;
  10. # 日志格式优化
  11. log_format main '$remote_addr - $remote_user [$time_local] "$request" '
  12. '$status $body_bytes_sent "$http_referer" '
  13. '"$http_user_agent" "$http_x_forwarded_for"';
  14. # 压缩配置
  15. brotli on;
  16. brotli_comp_level 6;
  17. brotli_types text/plain text/css application/json application/javascript text/xml;
  18. # 虚拟主机配置
  19. server {
  20. listen 80;
  21. server_name example.com;
  22. location / {
  23. root /usr/share/nginx/html;
  24. index index.html index.htm;
  25. }
  26. }
  27. }

四、卸载与清理流程

4.1 完整卸载步骤

  1. 停止服务:

    1. sudo systemctl stop nginx
    2. sudo systemctl disable nginx
  2. 删除服务单元文件:

    1. sudo rm -f /etc/systemd/system/nginx.service
    2. sudo systemctl daemon-reload
  3. 卸载二进制文件与配置:

    1. sudo rm -rf /usr/sbin/nginx \
    2. /etc/nginx \
    3. /usr/local/nginx \
    4. /var/run/nginx.pid \
    5. /var/log/nginx
  4. 清理依赖包(可选):

    1. sudo yum remove -y nginx* pcre-devel zlib-devel openssl-devel

4.2 残留文件检查

建议执行以下命令彻底清理:

  1. find / -name "*nginx*" -type f -exec rm -f {} \; 2>/dev/null

五、生产环境优化建议

  1. 性能调优

    • 根据CPU核心数设置worker_processes
    • 调整worker_connections值(通常设为ulimit -n的80%)
    • 启用aiosendfile提升静态文件处理能力
  2. 安全加固

    • 禁用服务器版本信息显示(server_tokens off
    • 限制访问日志记录敏感信息
    • 定期更新Nginx版本修补安全漏洞
  3. 监控集成

    • 配置Prometheus监控端点
    • 集成日志分析系统(如EFK栈)
    • 设置告警规则监控关键指标(5xx错误率、响应时间等)

通过标准化部署流程和参数配置,可确保Nginx服务器在CentOS环境下稳定运行。建议结合具体业务需求进行参数调优,并建立定期维护机制保障服务可靠性。