日志 | 一键源码编译安装 Nginx(带 Brotli 和 headers-more 模块)

VFX大学 Linux/macOS 与自动化运维 日志 | 一键源码编译安装 Nginx(带 Brotli 和 headers-more 模块)

标签: 

  • 该话题为空。
正在查看 0 条回复
  • 作者
    帖子
    • #902

      追光
      管理员

      最近项目中需要用到高效的 HTTP 压缩(Brotli),以及对响应头灵活控制(headers-more-nginx-module)。官方预编译包往往不带这两个模块,必须从源码自行编译。为了提升部署效率,写了个一键脚本,实现了快速安装。

      日期:2025-08-02

      作者:Ji SongBin

      安装环境准备

      脚本支持 CentOS 和 Ubuntu,自动安装必要的依赖:gcc、pcre、zlib、openssl、git 等,确保编译环境完整。


      方案核心

      • Nginx 版本:1.24.0(可根据需求替换)

      • 第三方模块:


      脚本流程

      1. 安装系统依赖

      2. 下载 Nginx 源码包并解压

      3. 克隆第三方模块仓库,初始化子模块(Brotli)

      4. 进入源码目录,配置编译参数,添加模块

      5. 编译并安装到 /usr/local/nginx

      6. 提示用户手动修改 nginx.conf 开启模块配置


      脚本代码

      #!/bin/bash
      set -e
      
      NGINX_VER="1.24.0"
      PREFIX="/usr/local/nginx"
      
      echo "==> 安装依赖"
      if [ -x "$(command -v yum)" ]; then
        sudo yum install -y gcc gcc-c++ make pcre-devel zlib-devel openssl-devel git
      elif [ -x "$(command -v apt)" ]; then
        sudo apt update
        sudo apt install -y build-essential libpcre3 libpcre3-dev zlib1g-dev libssl-dev git
      else
        echo "不支持的包管理器"
        exit 1
      fi
      
      echo "==> 下载源码"
      wget -c http://nginx.org/download/nginx-${NGINX_VER}.tar.gz
      tar zxvf nginx-${NGINX_VER}.tar.gz
      
      echo "==> 下载模块"
      git clone https://github.com/google/ngx_brotli.git
      cd ngx_brotli && git submodule update --init && cd ..
      
      git clone https://github.com/openresty/headers-more-nginx-module.git
      
      cd nginx-${NGINX_VER}
      
      echo "==> 配置编译参数"
      ./configure \
        --prefix=${PREFIX} \
        --with-http_ssl_module \
        --with-http_v2_module \
        --with-http_gzip_static_module \
        --add-module=../ngx_brotli \
        --add-module=../headers-more-nginx-module
      
      echo "==> 编译安装"
      make -j$(nproc)
      sudo make install
      
      echo "==> 安装完成,nginx 安装路径: ${PREFIX}"
      echo "请自行配置 ${PREFIX}/conf/nginx.conf 以启用 Brotli 和 headers-more 模块"

      后续配置示例(nginx.conf)

      load_module modules/ngx_http_brotli_filter_module.so;
      load_module modules/ngx_http_brotli_static_module.so;
      
      http {
          brotli on;
          brotli_comp_level 6;
          brotli_types text/plain text/css application/javascript application/json image/svg+xml application/xml+rss;
      
          more_set_headers "X-Frame-Options: SAMEORIGIN";
          more_set_headers "X-Content-Type-Options: nosniff";
      
          # 其他配置...
      }

      总结

      通过这个脚本,实现了在任意服务器快速编译带 Brotli 压缩和响应头灵活控制功能的 Nginx,适合对性能和安全性有更高要求的生产环境。后续可结合自动化运维集成,提升部署效率。

正在查看 0 条回复
  • 在下方一键注册,登录后就可以回复啦。