baltun
Администратор
- Сообщения
- 11.533
- Реакции
- 2.770
- Баллы
- 1.833
Pagespeed (или ngx_pagespeed) – это модуль для web-сервера Nginx и Apache с открытым исходным кодом, используемый для повышения скорости работы сайтов путём сокращения времени загрузки сайта в браузере.
Устанавливаем необходимый софт для того, чтобы собрать модуль из исходников:
Создаем директорию, куда будем закачивать архивы с исходным кодом. В последствии ее можно будет удалить:
Смотрим версию Nginx:
Скачиваем и разархивируем эту же версию Nginx:
Скачиваем и разархивируем исходники PageSpeed:
Смотрим, по какой ссылке нужно загружать PSOL (PageSpeed Optimization Libraries):
Скачиваем ПО PSOL и распаковываем в каталог с модулем pagespeed:
Запускаем процесс конфигурирования Nginx:
Начиная с версии Nginx 1.11.5 можно скомпилировать отдельные динамические модули без компиляции полного программного обеспечения Nginx. Компилируем модуль ngx_pagespeed:
Копируем его в директорию nginx применимо для ISPManager:
Добавляем модуль ngx_pagespeed.so в конфиг Nginx:
Подключим модуль PageSpeed во всех наших сайтах, для этого создадим файл с соответствующим содержимым:
Проверяем:
Перезапускаем nginx и смотрим статус:
Смотрим, отрабатывает ли pagespeed:
Прикладываю скомпилированный модуль pagespeed для version: nginx 1.18.0 из стандартного репозитория Centos 8. Во вложении также добавлен готовый модуль pagespeed v1.14.33.1-RC1 для nginx 1.18.0
Чтобы выключить модуль в виртуальном хосте достаточно там в разделе server прописать:
Для сборки Nginx могут потребоваться следующие библиотеки:
Устанавливаем необходимый софт для того, чтобы собрать модуль из исходников:
Код:
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
Создаем директорию, куда будем закачивать архивы с исходным кодом. В последствии ее можно будет удалить:
Код:
mkdir /root/nginx
cd /root/nginx
Смотрим версию Nginx:
Код:
nginx -v
nginx version: nginx/1.18.0
Скачиваем и разархивируем эту же версию Nginx:
Код:
wget http://nginx.org/download/nginx-1.18.0.tar.gz
tar -xvzf nginx-1.18.0.tar.gz
Скачиваем и разархивируем исходники PageSpeed:
Код:
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 Optimization Libraries):
Код:
cat PSOL_BINARY_URL
Скачиваем ПО PSOL и распаковываем в каталог с модулем pagespeed:
Код:
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:
Код:
cd ~/nginx/nginx-1.18.0/
sudo ./configure --prefix=/usr/share/nginx --sbin-path=/usr/sbin/nginx --modules-path=/usr/lib64/nginx/modules --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log --http-client-body-temp-path=/var/lib/nginx/tmp/client_body --http-proxy-temp-path=/var/lib/nginx/tmp/proxy --http-fastcgi-temp-path=/var/lib/nginx/tmp/fastcgi --http-uwsgi-temp-path=/var/lib/nginx/tmp/uwsgi --http-scgi-temp-path=/var/lib/nginx/tmp/scgi --pid-path=/run/nginx.pid --lock-path=/run/lock/subsys/nginx --user=nginx --group=nginx --with-file-aio --with-ipv6 --with-http_ssl_module --with-http_v2_module --with-http_realip_module --with-stream_ssl_preread_module --with-http_addition_module --with-http_xslt_module=dynamic --with-http_image_filter_module=dynamic --with-http_sub_module --with-http_dav_module --with-http_flv_module --with-http_mp4_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_random_index_module --with-http_secure_link_module --with-http_degradation_module --with-http_slice_module --with-http_stub_status_module --with-http_perl_module=dynamic --with-http_auth_request_module --with-mail=dynamic --with-mail_ssl_module --with-pcre --with-pcre-jit --with-stream=dynamic --with-stream_ssl_module --with-debug --with-cc-opt='-O2 -g -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -fexceptions -fstack-protector-strong -grecord-gcc-switches -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection' --with-ld-opt='-Wl,-z,relro -Wl,-z,now -specs=/usr/lib/rpm/redhat/redhat-hardened-ld -Wl,-E' --add-dynamic-module=../incubator-pagespeed-ngx-1.13.35.2-stable
Начиная с версии Nginx 1.11.5 можно скомпилировать отдельные динамические модули без компиляции полного программного обеспечения Nginx. Компилируем модуль ngx_pagespeed:
Код:
sudo make modules
Копируем его в директорию nginx применимо для ISPManager:
Код:
sudo cp objs/ngx_pagespeed.so /usr/share/nginx/modules
sudo chmod 644 chmod 644 /usr/share/nginx/modules/ngx_pagespeed.so
Добавляем модуль ngx_pagespeed.so в конфиг Nginx:
Код:
sudo nano /etc/nginx/nginx.conf
...
pid /var/run/nginx.pid;
load_module modules/ngx_pagespeed.so;
events {
...
Подключим модуль PageSpeed во всех наших сайтах, для этого создадим файл с соответствующим содержимым:
Код:
sudo nano /etc/nginx/conf.d/pagespeed.conf
pagespeed on;
pagespeed FileCachePath /var/cache/pagespeed;
pagespeed HttpCacheCompressionLevel 0;
pagespeed EnableFilters insert_dns_prefetch;
pagespeed MemcachedServers "localhost";
pagespeed RedisServer "localhost"; /*выбираем что то одно Memcached или Redis при такой конфигурации будет выбран по умолчанию Redis */
# HTTPS Support
pagespeed FetchHttps enable;
# PageSpeed Filters
# CSS Minification
pagespeed EnableFilters combine_css,rewrite_css;
pagespeed EnableFilters move_css_to_head;
# JS Minification
pagespeed EnableFilters combine_javascript,rewrite_javascript;
pagespeed EnableFilters move_css_above_scripts;
# Images Optimization
pagespeed InPlaceResourceOptimization on;
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;
# предварительная загрузка данных
pagespeed EnableFilters hint_preload_subresources;
Проверяем:
Код:
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 и смотрим статус:
Код:
sudo systemctl restart nginx
systemctl restart nginx
Смотрим, отрабатывает ли pagespeed:
Код:
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
Чтобы выключить модуль в виртуальном хосте достаточно там в разделе server прописать:
Код:
pagespeed off;
Для сборки Nginx могут потребоваться следующие библиотеки:
Код:
yum install -y pcre-devel openssl-devel libxslt-devel gd gd-devel
make && make install
Вложения
Последнее редактирование: