Подключаем модуль PageSpeed для Nginx в Centos 8
Pagespeed (или ngx_pagespeed) – это модуль для web-сервера Nginx и Apache с открытым исходным кодом, используемый для повышения скорости работы сайтов путём сокращения времени загрузки сайта в браузере.
Устанавливаем необходимый софт для того, чтобы собрать модуль из исходников
1
2
$ sudo dnf -y install wget curl unzip gcc-c++ pcre-devel zlib-devel
$ sudo dnf -y install gcc-c++ pcre-devel zlib-devel make unzip libuuid-devel
Создаем директорию, куда будем закачивать архивы с исходным кодом. В последствии ее можно будет удалить
1
2
$ mkdir ~/nginx
$ cd ~/nginx
Смотрим версию Nginx
1
2
$ nginx -v
nginx version: nginx/1.18.0
Скачиваем и разархивируем эту же версию Nginx
1
2
$ wget http://nginx.org/download/nginx-1.18.0.tar.gz
$ tar -xvzf nginx-1.18.0.tar.gz
Скачиваем и разархивируем исходники PageSpeed
1
2
$ wget https://github.com/apache/incubator-pagespeed-ngx/archive/v1.13.35.2-stable.tar.gz
$ tar -xvzf v1.13.35.2-stable.tar.gz
Скачиваем ПО PSOL
и распаковываем в каталог с модулем pagespeed
1
2
3
$ cd incubator-pagespeed-ngx-1.13.35.2-stable
$ 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
Запускаем процесс конфигурирования Nginx
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
$ cd ~/nginx/nginx-1.18.0/
$ sudo ./configure --with-compat --add-dynamic-module=../incubator-pagespeed-ngx-1.13.35.2-stable
[...]
Configuration summary
+ using system PCRE library
+ OpenSSL library is not used
+ using system zlib library
nginx path prefix: "/usr/local/nginx"
nginx binary file: "/usr/local/nginx/sbin/nginx"
nginx modules path: "/usr/local/nginx/modules"
nginx configuration prefix: "/usr/local/nginx/conf"
nginx configuration file: "/usr/local/nginx/conf/nginx.conf"
nginx pid file: "/usr/local/nginx/logs/nginx.pid"
nginx error log file: "/usr/local/nginx/logs/error.log"
nginx http access log file: "/usr/local/nginx/logs/access.log"
nginx http client request body temporary files: "client_body_temp"
nginx http proxy temporary files: "proxy_temp"
nginx http fastcgi temporary files: "fastcgi_temp"
nginx http uwsgi temporary files: "uwsgi_temp"
nginx http scgi temporary files: "scgi_temp"
Начиная с версии Nginx 1.11.5 можно скомпилировать отдельные динамические модули без компиляции полного программного обеспечения Nginx. Компилируем модуль ngx_pagespeed
1
$ sudo make modules
Копируем его в директорию Nginx
1
2
$ sudo cp objs/ngx_pagespeed.so /etc/nginx/modules
$ sudo chmod 644 /etc/nginx/modules/ngx_pagespeed.so
Добавляем модуль ngx_pagespeed.so
в конфиг Nginx
1
2
3
4
5
6
7
8
$ sudo nano /etc/nginx/nginx.conf
...
pid /var/run/nginx.pid;
load_module modules/ngx_pagespeed.so;
events {
...
Подключим модуль PageSpeed во всех наших сайтах, для этого создадим файл с соответствующим содержимым
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
$ sudo nano /etc/nginx/conf.d/pagespeed.conf
pagespeed on;
pagespeed FileCachePath /var/cache/pagespeed;
pagespeed HttpCacheCompressionLevel 0;
# HTTPS Support
pagespeed FetchHttps enable;
# PageSpeed Filters
# CSS Minification
pagespeed EnableFilters combine_css,rewrite_css;
# JS Minification
pagespeed EnableFilters combine_javascript,rewrite_javascript;
# Images Optimization
pagespeed EnableFilters lazyload_images;
pagespeed EnableFilters rewrite_images;
pagespeed EnableFilters convert_jpeg_to_progressive,convert_png_to_jpeg,convert_jpeg_to_webp,convert_to_webp_lossless;
# Remove comments from HTML
pagespeed EnableFilters remove_comments;
# Remove WHITESPACE from HTML
pagespeed EnableFilters collapse_whitespace;
Проверяем
1
2
3
$ sudo nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
Перезапускаем nginx и смотрим статус
1
2
$ sudo systemctl restart nginx
$ systemctl restart nginx
Смотрим, отрабатывает ли PageSpeed
1
2
3
4
5
6
7
8
9
$ curl -I localhost
HTTP/1.1 200 OK
Server: nginx/1.18.0
Content-Type: text/html
Connection: keep-alive
Vary: Accept-Encoding
Date: Fri, 18 Dec 2020 13:46:53 GMT
X-Page-Speed: 1.13.35.2-0
Cache-Control: max-age=0, no-cache