Пост

Подключаем модуль 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
Авторский пост защищен лицензией CC BY 4.0 .

© IT Draft. Некоторые права защищены.