По сравнению с HTTP/1.x, HTTP/2 внес большие изменения и оптимизации в базовую передачу:
HTTP/2 использует двоичный формат для передачи данных, а не текстовый формат HTTP/1.x. Двоичный формат дает больше преимуществ и возможностей при анализе протоколов и расширении оптимизации. HTTP/2 использует HPACK для сжатия и передачи заголовков сообщений, что позволяет экономить сетевой трафик, занимаемый заголовками сообщений. Каждый запрос HTTP/1.x содержит большое количество избыточной информации заголовка, что приводит к потере большого количества ресурсов полосы пропускания. Сжатие головы может очень хорошо решить эту проблему. Проще говоря, мультиплексирование означает, что все запросы выполняются одновременно через TCP-соединение. Хотя HTTP/1.x также может отправлять одновременные запросы через конвейер, ответы между несколькими запросами будут блокироваться, поэтому конвейер еще не получил широкого распространения, в то время как HTTP/2 обеспечивает настоящие параллельные запросы. В то же время потоки также поддерживают управление приоритетом и потоком. Server Push: сервер может быстрее передавать ресурсы клиенту. Например, сервер может активно отправлять файлы JS и CSS клиенту, не требуя от клиента анализа HTML и последующей отправки этих запросов. Оно уже есть, когда клиенту это нужно.
Необходимые условия для обновления HTTP2
nginx версии 1.10.0 или выше скомпилирован на основе openssl версии 1.0.2 или выше и должен поддерживать https.
Место установки программного обеспечения
openssl
1. Место составления
/usr/local/openssl
2. Расположение мягкой ссылки
/usr/bin/openssl
/usr/include/openssl
nginx
1. Расположение файлов компиляции и конфигурации.
/etc/nginx
Обновите nginx и OpenSSL на всех игровых серверах.
Обновить OpenSSL
1. Создайте резервную копию старой версии openssl.
mv /usr/bin/openssl /usr/bin/openssl.oldmv /usr/include/openssl /usr/include/openssl.old
2. Загрузите версию openssl 1.1, распакуйте и скомпилируйте ее.
wget https://www.openssl.org/source/openssl-1.1.0g.tar.gz tar zxvf openssl-1.1.0g.tar.gz cd openssl-1.1.0g/ ./config --prefix=/usr/local/openssl shared zlib make depend make && make install ln -s /usr/local/openssl/bin/openssl /usr/bin/openssl ln -s /usr/local/openssl/include/openssl /usr/include/openssl (предпочтительно) cd /usr/local/openssl/lib ln -s libssl.so.1.1 libcrypto.so.1.1 /lib/x86_64-linux-gnu/ echo /usr/local/openssl/lib >> /etc/ld.so.conf
3. Проверьте информацию о версии openssl.
openssl versionif [[ `openssl version |awk '{print $2}'` == 1.1.0g ]];then echo okfi
обновление nginx (компиляция исходного кода)
Исходный файл конфигурации не будет потерян.
1. Загрузите пакет исходного кода.
wget http://nginx.org/download/nginx-1.12.2.tar.gz
2. Разархивируйте, скомпилируйте и установите.
При компиляции и установке nginx параметр --with-openssl по умолчанию поддерживает только исходный код OpenSSL и не поддерживает скомпилированный OpenSSL. Вы можете изменить auto/lib/openssl/confsed "s/.openssl///" c в каталоге распаковки nginx.
Удалите .openssl в файле, чтобы поддержать скомпилированный путь openssl.
CORE_INCS="CORE_DEPS OPENSSL/.openssl/include/openssl/ssl.h"CORE_LIBS="CORE_LIBS OPENSSL/.openssl/lib/libssl.a"CORE_LIBS="CORE_LIBS OPENSSL/.openssl/lib/libcrypto.a"