Установка http/2

Как установить и настроить http/2 с openssl в  Nginx на Centos 7 с панелью управления VestaCP

В этой детальной инструкции рассмотрена установка http/2 с openssl в VestaCP с Centos 7. Дело в том, что обычное подключение современного протокола http/2 в конфигурационном файле Nginx с панелью VestaCP  не работает.

Я и сам долгое время не мог понять по какой причине протокол не работает, подключенный стандартным образом, типа ssl http2 в конфиге Nginx. А дело в том, что при установки VestaCP пакет Nginx устанавливается со старым openssl, версии 1.0.2. И с этим устаревшим пакетом современный протокол работать не будет.

Необходимо пересобрать Nginx с новым openssl и подключить http/2. Правильная установка необходимых пакетов даст значительный прирост в скорости загрузки страниц Вашего сайта.

Пред началом данной операции проверьте свой сайт на двух сервисах. Первый проверяет работу и подключение протокола http/2 (просто перейдите по ссылке, откроется в новом окне и вставьте свой домен).

https://tools.keycdn.com/http2-test

Второй, работу и правильное подключение SSL сертификата.

Установка http/2 с openssl в VestaCP с Centos 7
Установка openssl

https://www.ssllabs.com/ssltest/

Проверьте свою версию Nginx и openssl вызвав команду:

nginx -V

Установка http2 в VestaCP
Установка http2

Установка http/2 с openssl 3.0.1 в  Nginx на Centos 7 с панелью управления VestaCP

Если ранее Вы не осуществляли установку дополнительных модулей в Nginx, то дополнительные расширения устанавливаются через пересборку самого Nginx. То есть необходимо скачать дистрибутив именно той версии, которая указана в Вашем случаи при проверки версии.

В данной инструкции используется версия  nginx-1.20.2, если у Вас другая версия, то Вам необходимо поменять цифры пакета на свои. Я так же не рекомендую удалять скаченный и распакованный пакет Nginx. Он пригодится для установки других расширений.

Для работы протокола http/2 и openssl 3.0.1 требуется установить дополнение для ПЕРЛа. Запускаем терминал, заходим на свой сервер и вводим команду:

sudo yum install libtool perl-core zlib-devel -y

Если будет запрос подтверждения, то вводим y (в английской раскладке).

Установка будет производится в папку /usr/src. В терминале переходим в установочную папку, вводим команду:

cd /usr/src

Нам нужно скачать сам пакет openssl 3.0.1. На момент написания статьи, самый новый. Проверьте на официальном сайте. Нужна именно стабильная последняя версия.

Итак, скачиваем, вводим команду:

wget https://www.openssl.org/source/openssl-3.0.1.tar.gz

Далее распаковываем скачанный архив и сам архив удаляем, он больше не нужен. Вводим команду:

tar -zxvf openssl-*.tar.gz && \rm openssl-*.tar.gz

Теперь необходимо установить зависимости, вводим по очереди, следующие две команды:

yum install gc gcc gcc-c++ pcre-devel zlib-devel make wget openssl-devel libxml2-devel libxslt-devel gd-devel perl-ExtUtils-Embed GeoIP-devel gperftools gperftools-devel libatomic_ops-devel perl-ExtUtils-Embed

Если команда wget не срабатывает, значит у Вас не установлен данный пакет. Его нужно до установить, выполнив команду:

sudo yum install wget

После установки повторить вторую команду из предыдущего шага.

Проверяем версию nginx

nginx -V

В терминале необходимо скопировать всю конфигурацию, найдите фразу configure arguments: и начиная с —prefix=/etc/nginx скопируйте все, как показано на скрине и сохраните куда нибудь в текстовый файл. Эта информация понадобится позже.

Переходим в каталог: cd /usr/src

Теперь необходимо установить необходимый репозиторий Nginx, в моем случаи это nginx-1.20.2, если у Вас другая версия, то нужно установить свою, указанную при проверке версии.

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

Распаковываем скаченный архив следующей командой:

tar zxvf nginx-1.20.2.tar.gz

Переходим в папку со скаченной и распакованной версией Nginx:

cd nginx-1.20.2

Выполняем конфигурацию: Добавляем к скопированному конфигу в самый конец  —with-openssl=/usr/src/openssl-3.0.1 и в начало ./configure (обязательно должны быть пробелы), жмем энтер.

Установка http/2
Установка http/2 в VestaCP на Centos 7

Конфигурируется долго 15-40 минут.

Пример команды конфигурирования (Вам нужно ввести свою).

./configure --prefix=/etc/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 --pid-path=/var/run/nginx.pid --lock-path=/var/run/nginx.lock --http-client-body-temp-path=/var/cache/nginx/client_temp --http-proxy-temp-path=/var/cache/nginx/proxy_temp --http-fastcgi-temp-path=/var/cache/nginx/fastcgi_temp --http-uwsgi-temp-path=/var/cache/nginx/uwsgi_temp --http-scgi-temp-path=/var/cache/nginx/scgi_temp --user=nginx --group=nginx --with-compat --with-file-aio --with-threads --with-http_addition_module --with-http_auth_request_module --with-http_dav_module --with-http_flv_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_mp4_module --with-http_random_index_module --with-http_realip_module --with-http_secure_link_module --with-http_slice_module --with-http_ssl_module --with-http_stub_status_module --with-http_sub_module --with-http_v2_module --with-mail --with-mail_ssl_module --with-stream --with-stream_realip_module --with-stream_ssl_module --with-stream_ssl_preread_module --with-cc-opt='-O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -m64 -mtune=generic -fPIC' --with-ld-opt='-Wl,-z,relro -Wl,-z,now -pie' --with-openssl=/usr/src/openssl-3.0.1

Далее, после компиляции вводим:

make

Тоже ждем долго.

Далее:

make install

Перезапускаем nginx:

nginx -s reload

Далее:

nginx -V

ВУАЛЯ — все работает. В nginx должен высветится новый openssl-3.0.1.

Настройка http/2 с openssl 3.0.1 в  Nginx на Centos 7 с панелью управления VestaCP

Для работы нового функционала, добавляем параметры в /etc/nginx/nginx.conf (в секцию http):

ssl_protocols TLSv1.2 TLSv1.3;
ssl_prefer_server_ciphers on;
ssl_ciphers TLS13-CHACHA20-POLY1305-SHA256:TLS13-AES-128-GCM-SHA256:TLS13-AES-256-GCM-SHA384:ECDHE:!COMPLEMENTOFDEFAULT;
ssl_stapling on;

Старую запись ssl_ciphers или закомментируйте знаком # или удалите.

Проверяем конфигурацию на ошибки и перезапускаем nginx:

nginx -t

Если все сделали правильно и ошибок нет, то перезапускаем nginx командой:

nginx -s reload

Открываем свой сайт в последней версии chrome и проверяем с помощью dev tools.

Проверка openssl 3.0.1
Проверка openssl 3.0.1 и tls1.3

Перейдите на сайт https://tools.keycdn.com/http2-test и протестируйте свой проект.

Вы должны получить поддержку нового протокола http/2.

Перейдите на сайт https://www.ssllabs.com/ssltest/ и проверьте свой сайт на работоспособность SSL сертификата.

Проверка подключения http2
Проверка подключения http2 в VestaCP на Centos 7 с Nginx

P. S.

Надеюсь мне удалось рассказать в данной инструкции как грамотно осуществляется установка http/2 с openssl в VestaCP с Centos 7.

 

 

Учебные материалы

 

Понравился материал? Подписывайтесь на наш блог.

Только полезная информация и реальные кейсы

Добавить комментарий

Ваш адрес email не будет опубликован.

 для диалога необходимо принять правила кофиденциальности *

СОБСТВЕННЫЙ ИНТЕРНЕТ МАГАЗИН!!!
ПОЛУЧИ БЕСПЛАТНО!!!

Оставайтесь с нами и Вы…

СОБСТВЕННЫЙ ПАРТНЕРСКИЙ МАГАЗИН

Подпишись сейчас и получи 5 уроков.

Запусти свой интернет магазин.

Сумеете настроить и управлять магазином.

Все это без знаний web программирования.

Материал дохотчиво изложен и доступен любому.

Пошаговая инструкция по созданию собственного партнерского магазина!

«В будущем на рынке останется два вида компаний: те, кто в Интернет и те, кто вышел из бизнеса» ~ Билл Гейтс

Получи конструктор лендингов бесплатно!

Конструктор лендингов!