HTTP/2 на этом сайте

Submitted by Ромка on Вс, 25/10/2015 - 16:45

Ромка аватар

Обновил на этом сайте nginx до версии 1.9.5 и включил поддержку HTTP/2. Для теста погонял сайт до и после на WebPagetest. Честно говоря, результат измерений не сильно впечатлил, вот результат до:

а вот после:

Но визуально, возможно подсознательно, кажется что сайт стал грузиться шустрее.

Ниже информация о том, что нужно сделать для апгрейда nginx в Ubuntu.

Сначала обязательно сделайте резервную копию директории с конфигами веб-сервера — скопировать стоит всю директорию /etc/nginx.

Затем проверьте какая версия уже установлена и какая доступна:

sudo apt-cache policy nginx
nginx:
  Installed: 1.4.6-1ubuntu3.1
  Candidate: 1.4.6-1ubuntu3.1
  Version table:
 *** 1.4.6-1ubuntu3.1 0
        500 http://mirrors.digitalocean.com/ubuntu/ trusty-updates/main amd64 Packages
        500 http://security.ubuntu.com/ubuntu/ trusty-security/main amd64 Packages
        100 /var/lib/dpkg/status
     1.4.6-1ubuntu3 0
        500 http://mirrors.digitalocean.com/ubuntu/ trusty/main amd64 Packages

 
В моем случае в официальном репозитории Ubuntu пока лежит nginx 1.4.6, но я знаю, что в репозитории разработчиков nginx доступен пакет с версией 1.9.5. Для того чтобы добавить этот репозиторий создайте в директории /etc/apt/sources.list.d файл nginx.list с таким содержимым:

deb http://nginx.org/packages/mainline/ubuntu/ trusty nginx
deb-src http://nginx.org/packages/mainline/ubuntu/ trusty nginx

 
Далее, чтобы при установке не получить ошибку: W: GPG error: http://nginx.org trusty Release: The following signatures couldn't be verified because the public key is not available: NO_PUBKEY ABF5BD827BD9BF62 скачайте с http://nginx.org/en/linux_packages.html ключ http://nginx.org/keys/nginx_signing.key и добавьте его в keyring:

wget http://nginx.org/keys/nginx_signing.key
sudo apt-key add nginx_signing.key

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

sudo apt-get update
sudo apt-cache policy nginx
nginx:
  Installed: 1.4.6-1ubuntu3.1
  Candidate: 1.9.5-1~trusty
  Version table:
     1.9.5-1~trusty 0
        500 http://nginx.org/packages/mainline/ubuntu/ trusty/nginx amd64 Packages
     1.4.6-1ubuntu3.3 0
        500 http://mirrors.digitalocean.com/ubuntu/ trusty-updates/main amd64 Packages
 *** 1.4.6-1ubuntu3.1 0
        500 http://security.ubuntu.com/ubuntu/ trusty-security/main amd64 Packages
        100 /var/lib/dpkg/status
     1.4.6-1ubuntu3 0
        500 http://mirrors.digitalocean.com/ubuntu/ trusty/main amd64 Packages

 
Еще раз убедитесь, что забэкапили директорию /etc/nginx. В моем случае пришлось удалить старую версию nginx, иначе я получал такую же ошибку какая описана тут, а удаление текущей версии программы удаляет существующие конфиги, поэтому критически важно иметь их резервную копию перед выполнением следующего шага. Удаляем текущую версию nginx:

sudo apt-get purge nginx nginx-common

 
И ставим новую версию:

sudo apt-get install nginx
 
nginx -v
nginx version: nginx/1.9.5

 
Готово.

Теперь осталось вернуть на место конфиги из бэкапа и активировать HTTP/2 для выбранных хостов. В моем случае я заменил в конфиге:

server {
        listen       443 ssl;
        server_name  romka.eu;
        ...
}

 
на:

server {
        listen       443 ssl http2;
        server_name  romka.eu;
        ...
}

 
Преимущества HTTP/2 я описал в предыдущем посте.