跳到主要内容

Ubuntu 22.04安装nginx加速插件PageSpeed

PageSpeed是谷歌公司开发的网页加速工具,它提供 Apache 服务器和 Nginx 两个版本,本文以 Ubuntu 22.04 为例介绍如何安装 PageSpeed 插件。

1. 自动安装

Google 提供了自动安装的脚本,不过笔者在实际使用的过程中会报错,所以选择手动安装。

bash <(curl -f -L -sS https://ngxpagespeed.com/install) \
--nginx-version latest

2. 手动安装

 安装 PageSpeed 插件依赖 Nginx 的源码,所以安装的步骤比较多。

2.1 安装依赖包

PageSpeed 依赖一些三方包,在安装之前确保依赖的三方包都安装完成。

apt-get update -y
apt-get install dpkg-dev build-essential zlib1g-dev libpcre3 git libpcre3-dev unzip -y

2.2 安装nginx

PageSpeed 是一款 Nginx 插件,所以需要先安装 Nginx,已经安装的读者可以跳过。

apt-get install nginx -y

 确认 Nginx 的版本。

nginx -v

nginx version: nginx/1.18.0 (Ubuntu)

2.3 下载nginx源代码

Ubuntu 22.04 默认安装的 Nginx 版本为1.18.0,所以我们下载1.18.0的源代码。

wget http://nginx.org/download/nginx-1.18.0.tar.gz

tar -xvzf nginx-1.18.0.tar.gz

2.4 下载PageSpeed源代码

PageSpeed 的源代码通过 git 进行管理,将代码拷贝到本地,并切换到最新的稳定分支。

git clone https://github.com/apache/incubator-pagespeed-ngx.git

cd incubator-pagespeed-ngx
git checkout latest-stable

2.5 下载psol

 编译 PageSpeed 需要下载 psol 的包,在incubator-pagespeed-ngx目录下,执行cat PSOL_BINARY_URL会得到对应 psol 的下载地址,其中BIT_SIZE_NAME表示x64ia32等。

https://dl.google.com/dl/page-speed/psol/1.13.35.2-$BIT_SIZE_NAME.tar.gz

 笔者的机器是x64,故下载对应的版本。

wget https://dl.google.com/dl/page-speed/psol/1.13.35.2-x64.tar.gz

tar -xvzf 1.13.35.2-x64.tar.gz
警告

Ubuntu 22.04 使用1.13.35.2的 psol 会报错。参考github issue,前往psol-jammy下载 psol

ngx_pagespeed.so undefined symbol: pthread_mutex_consistent_np

2.6 编译

PageSpeed 所需的源代码已经下载完成,接下来就是编译插件。

cd /root/nginx-1.18.0
apt-get build-dep nginx
apt-get install uuid-dev

./configure --with-compat --add-dynamic-module=/root/incubator-pagespeed-ngx

make modules

cp objs/ngx_pagespeed.so /usr/share/nginx/modules/

2.7 修改nginx配置

PageSpeed 模块编译完成之后,需要动态加载该模块,打开/etc/nginx/nginx.conf,在第一行加上下面内容。

load_module modules/ngx_pagespeed.so;

 在每个需要开启 PageSpeedserver 块配置中加入以下内容。

pagespeed on;

# Needs to exist and be writable by nginx. Use tmpfs for best performance.
pagespeed FileCachePath /var/ngx_pagespeed_cache;

# Ensure requests for pagespeed optimized resources go to the pagespeed handler
# and no extraneous headers get set.
location ~ "\.pagespeed\.([a-z]\.)?[a-z]{2}\.[^.]{10}\.[^.]+" {
add_header "" "";
}
location ~ "^/pagespeed_static/" { }
location ~ "^/ngx_pagespeed_beacon$" { }

PageSpeed 使用/var/ngx_pagespeed_cache(可以修改)作为文件缓存的路径,所以需要创建这个文件夹,并赋予nginx读写权限。

mkdir -p /var/ngx_pagespeed_cache

chown -R www-data:www-data /var/ngx_pagespeed_cache

2.8 重启nginx

 修改完配置,重启配置即可。

nginx -t
nginx -s reload

2.9 检查是否生效

 使用curl命令检查插件是否生效即可。

curl -p -I https://linlan.xyz

署名-非商业性使用-禁止演绎 4.0 国际