为Nginx添加Brotli和PageSpeed支持

learningman 6月 10, 2019

本文所有操作均基于宝塔面板环境下完成,但参数对于自编译的Nginx也可生效

宝塔默认的Nginx编译参数已经可以满足大部分人的需求,但对我而言,它还缺少BrotliPageSpeed这两个常用的模块。本文将介绍如何编译支持这两个模块的Nginx。

1.Brotli的编译

cd /root
git clone https://github.com/bagder/libbrotli
cd libbrotli
./autogen.sh
./configure
make && make install
cd /root
git clone https://github.com/google/ngx_brotli
cd ngx_brotli
git submodule update --init

将这段代码保存为shell文件并执行,即可编译安装所需的Brotli模块

2.PageSpeed的编译

#[check the release notes for the latest version]
NPS_VERSION=1.13.35.2-stable
cd
wget https://github.com/apache/incubator-pagespeed-ngx/archive/v${NPS_VERSION}.zip
unzip v${NPS_VERSION}.zip
nps_dir=$(find . -name "*pagespeed-ngx-${NPS_VERSION}" -type d)
cd "$nps_dir"
NPS_RELEASE_NUMBER=${NPS_VERSION/beta/}
NPS_RELEASE_NUMBER=${NPS_VERSION/stable/}
psol_url=https://dl.google.com/dl/page-speed/psol/${NPS_RELEASE_NUMBER}.tar.gz
[ -e scripts/format_binary_url.sh ] && psol_url=$(scripts/format_binary_url.sh PSOL_BINARY_URL)
wget ${psol_url}
tar -xzvf $(basename ${psol_url})  # extracts to psol/

其中的变量NPS_VERSION可以在PageSpeed的发布日志中找到,一般建议使用stable版本。

3.Nginx的编译

在你之前的Nginx编译参数后追加

--add-module=/www/server/ngx_brotli --add-module=/root/incubator-pagespeed-ngx-1.13.35.2-stable

在宝塔中,你可以修改/www/server/panel/install/nginx.sh文件来对Nginx的编译参数进行修改,就我而且,其位于75行。随后使用sh /www/server/panel/install/nginx.sh install $(欲安装的Nginx版本号)来安装Nginx。如果你已经安装过Nginx,则应当将install替换为update
如果是自行编译Nginx,你应当按照你之前的编译方式重新编译。注意,编译前应当关闭旧的Nginx进程。
随后,你可以使用nginx -V来检验新的参数是否已被应用。

4.总结及参考资料

简而言之,就是使用--add-module来添加模块
对宝塔而言,大部分运行环境都可以在/www/server/panel/install/下找到安装脚本,对这些脚本进行修改可以简单地改变编译参数,在宝塔官方支持修改编译参数之前,可做权宜之计。
在本文的撰写过程中,参考有
[1]宝塔面板-换一种宝塔方式编译brotli的教程
[2]Build ngx_pagespeed From Source
[3]PageSpeed Release Notes

本文采用 CC BY-NC-SA 4.0 协议进行许可,在您遵循此协议的情况下,可以自由共享与演绎本文章。
本文链接:https://learningman.top/archives/13

发表评论

电子邮件地址不会被公开。 必填项已用*标注