nginx: HTTP/2 и kTLS
izorkin на gmail.com
izorkin на gmail.com
Вс Янв 7 07:39:00 UTC 2024
Доброе утро.
При использовании kTLS и sendfile наблюдается просадка производительности
при отдаче статических файлов, например при видео-стриминге. Одним из
вариантов решения является перенести статический файлы на другой хост и
использовать там только протоколы HTTP/1.1 и/или HTTP/3. Либо усложнять
логику работы в блоке location.
Не все сервисы позволяют выводить статику на отдельный хост, либо могут
иметь сложную конфигурацию nginx. Например web-сервис Peertube имеет
множество блоков location и использует различные условия if:
https://github.com/Chocobozzz/PeerTube/blob/develop/support/nginx/peertube
Обычному пользователю будет сложнее с этим разобраться и добавить
дополнительные блоки для исключения работы протокола HTTP/2 через kTLS.
Вполне легко можно запутаться и нарушить логику работы сайта.
Хотелось бы иметь более простой и универсальный способ отключения
обработки протокола HTTP/2 через kTLS.
Предполагаю, что перед передачей шифрования ядру системы сейчас nginx
проверяет наличие ssl и параметра sendfile. Можно ли добавить дополнительное
условие, которое проверяет дополнительный параметр, который указывает
какой протокол исключить из обработки шифрования ядром?
По итогу получится примерно такой вариант конфигурации:
server {
listen 0.0.0.0:443 quic reuseport ;
listen 0.0.0.0:443 ssl reuseport ;
http2 on;
http3 on;
ssl_conf_command Options KTLS;
disable_ktls_for_protocol http2;
...
Мне кажется, что такой вариант эффективнее, чем добавлять условие if с
rewrite и дополнительный блок location.
--
С уважением,
Izorkin mailto:izorkin на gmail.com
Подробная информация о списке рассылки nginx-ru