NGINX: kTLS

Ускоряем отдачу трафика веб-сервером модулем kTLS.

Сперва надо убедится, что версия ядра 4.17 или выше. Если с этим все ОК, то продолжаем.

Подгружаем модуль ядра и проверяем загрузился ли он:

modprobe tls
lsmod|grep tls

Скачиваем openssl 3, nginx 1.21.4, компилим и устанавливаем:

wget https://www.openssl.org/source/openssl-3.0.0.tar.gz
tar xvvf openssl-3.0.0.tar.gz
wget http://nginx.org/download/nginx-1.21.4.tar.gz
tar xvvf nginx-1.21.4.tar.gz
cd nginx-1.21.4
./configure --with-http_stub_status_module --with-http_ssl_module --with-file-aio --with-threads --with-http_mp4_module --with-http_flv_module --with-http_realip_module --with-http_v2_module --with-http_geoip_module --with-openssl=../openssl-3.0.0 --with-openssl-opt=enable-ktls
make
make install

Обновляем конфигурацию nginx.conf:

# в секцию http добавляем директиву
sendfile on;

Обновляем конфигурацию виртуального хоста:

ssl_protocols TLSv1.3;
ssl_conf_command Options KTLS;

Перезапускаем nginx и проверяем отдачу статики. Файлы должны теперь отдаваться шустрее за счет того, что теперь nginx для шифрования обращается прямо в ядро. Это значит, что данные не копируются с kernel space в user space перед отдачей, а сразу отдается с kernel space.