Hello! On Sat, Jan 06, 2024 at 08:20:59PM +0300, izor...@gmail.com wrote:
> Добрый вечер, Илья. > > Да, он влияет как и на HTTP/1.1 и на HTTP/2 протоколы. Ещё бы добавить опцию, > например, disable_ktls_for_protocol. > В итоге получится примерно такой вариант: > 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; > > По итогу при активации kTLS не будет просадки в производительности для HTTP/2 > протокола, т.к. обработкой > шифрованием будет заниматься сам процесс nginx :) Просадка производительности, которую вы наблюдаете для HTTP/2 при включённом kTLS - не собственно из-за kTLS, а из-за того, что у вас включён sendfile, и при включённом kTLS становится возможным его использование. А в случае HTTP/2 это выливается в большое количество syscall'ов из-за HTTP/2-фрейминга. Если очень хочется получить включённый sendfile и kTLS в случае HTTP/1.x, и выключенный в случае HTTP/2, то можно сделать как-то так (слегка адаптировано из https://mailman.nginx.org/pipermail/nginx-devel/2022-September/NSHDCLL2TY3Q536CO5MAKXSC3HCIMUNF.html): server { listen 443 ssl; http2 on; location / { if ($server_protocol != 'HTTP/2.0') { rewrite ^(.*) /sendfile$1 last; } sendfile off; } location /sendfile/ { alias html/; sendfile on; } } Но смысла в этом не очень много, так как при включённом HTTP/2 рассчитывать на клиентов, которые придут по HTTP/1.x, не имеет особого смысла, таких клиентов будет исчезающе мало. Если хочется получить высокую производительность при скачивании больших файлов, и при этом использовать HTTP/2 (и/или HTTP/3), то имеет смысл заводить отдельный виртуальный сервер, в котором разрешать только HTTP/1.x (а также sendfile и kTLS), и раздавать файлы с него. Для HTTP/3 не работают ни kTLS, ни sendfile, соответственно влияния на производительность HTTP/3 от включения kTLS не будет. -- Maxim Dounin http://mdounin.ru/ _______________________________________________ nginx-ru mailing list nginx-ru@nginx.org https://mailman.nginx.org/mailman/listinfo/nginx-ru