日志 | 一键源码编译安装 Nginx(带 Brotli 和 headers-more 模块)
› 社区话题 › Linux/macOS 与自动化运维 › 日志 | 一键源码编译安装 Nginx(带 Brotli 和 headers-more 模块)
标签: Nginx
- 该话题为空。
正在查看 0 条回复

- 作者帖子
- 2025年8月2日 - 下午4:38 #902
追光管理员最近项目中需要用到高效的 HTTP 压缩(Brotli),以及对响应头灵活控制(headers-more-nginx-module)。官方预编译包往往不带这两个模块,必须从源码自行编译。为了提升部署效率,写了个一键脚本,实现了快速安装。
日期:2025-08-02
作者:Ji SongBin
安装环境准备
脚本支持 CentOS 和 Ubuntu,自动安装必要的依赖:gcc、pcre、zlib、openssl、git 等,确保编译环境完整。
方案核心
Nginx 版本:1.24.0(可根据需求替换)
第三方模块:
ngx_brotli —— Google 官方 Brotli 模块
headers-more-nginx-module —— 动态修改请求和响应头
脚本流程
安装系统依赖
下载 Nginx 源码包并解压
克隆第三方模块仓库,初始化子模块(Brotli)
进入源码目录,配置编译参数,添加模块
编译并安装到 /usr/local/nginx
提示用户手动修改 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 条回复
- 在下方一键注册,登录后就可以回复啦。