nginx: [emerg] invalid parameter "http3"

D
На сайте с 28.06.2008
Offline
1101
992

Обновляю тут ПО на сервере, ну и решил ставить все самое новое, вот и спотыкаюсь на каждом шагу.

Поставил самый новый Nginx с поддержкой http3, ставил через это https://github.com/angristan/nginx-autoinstall

и вот на такой конфиг 

server {
        listen 443 ssl http2; # TCP listener for HTTP/2.0
    listen 443 http3 reuseport;  # UDP listener for QUIC+HTTP/3
    ssl_protocols       TLSv1.3; # QUIC requires TLS 1.3
    add_header Alt-Svc 'h3=":443"';   # Advertise that HTTP/3 is available
    add_header QUIC-Status $quic;     # Sent when QUIC was used
..........

ругается invalid parameter "http3" , такое впечатление что nginx не поддерживает, хотя я же специально для этого его и пересобирал.

root@fin:/# nginx -V
nginx version: nginx/1.22.0
built by gcc 10.2.1 20210110 (Debian 10.2.1-6)
built with OpenSSL 1.1.1 (compatible; BoringSSL) (running with BoringSSL)
TLS SNI support enabled
configure arguments: --prefix=/etc/nginx --sbin-path=/usr/sbin/nginx --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log --pid-path=/var/run/nginx.pid --lock-path=/var/run/nginx.lock --http-client-body-temp-path=/var/cache/nginx/client_temp --http-proxy-temp-path=/var/cache/nginx/proxy_temp --http-fastcgi-temp-path=/var/cache/nginx/fastcgi_temp --user=nginx --group=nginx --with-cc-opt=-Wno-deprecated-declarations --with-cc-opt=-Wno-ignored-qualifiers --with-openssl=/usr/local/src/nginx/modules/quiche/quiche/deps/boringssl --with-quiche=/usr/local/src/nginx/modules/quiche --with-threads --with-file-aio --with-http_ssl_module --with-http_v2_module --with-http_mp4_module --with-http_auth_request_module --with-http_slice_module --with-http_stub_status_module --with-http_realip_module --with-http_gunzip_module --with-http_gzip_static_module --with-stream_ssl_module --with-mail_ssl_module --with-http_sub_module --add-module=/usr/local/src/nginx/modules/ngx_brotli --add-module=/usr/local/src/nginx/modules/ngx_http_geoip2_module-3.3 --with-http_v3_module

Куда копать?

P0
На сайте с 17.06.2010
Offline
94
#1

если я все правильно понял , то

в описании на гитхабе написано, что они используют какой-то патч от cloudflare. в их документации параметр называется не http3 а quic

listen 443 quic reuseport;
listen 443 ssl http2;

а конкретно от nginx - https://hg.nginx.org/nginx-quic/file/quic

https://kinobox.tv/ - бесплатный плеер с фильмами для киносайта.
D
На сайте с 28.06.2008
Offline
1101
#2
Pr00f #:

если я все правильно понял , то

в описании на гитхабе написано, что они используют какой-то патч от cloudflare. в их документации параметр называется не http3 а quic

Спасибо,  вот этот конфиг загрузился без ошибок

server {
    # Enable QUIC and HTTP/3.
    listen 443 quic reuseport;

    # Enable HTTP/2 (optional).
    listen 443 ssl http2;
        
    # Enable all TLS versions (TLSv1.3 is required for QUIC).
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3;
        
    # Add Alt-Svc header to negotiate HTTP/3.
    add_header alt-svc 'h3-23=":443"; ma=86400'

...

Но проблема в том, что сайт работает по http2, а где же http3?


P0
На сайте с 17.06.2010
Offline
94
#3
Dram #:

Теперь 

а если удалить строчку из конфига

add_header QUIC-Status $quic;

в их примере она не указана - https://blog.cloudflare.com/experiment-with-http-3-using-nginx-and-quiche/

D
На сайте с 28.06.2008
Offline
1101
#4

Мы одновременно написали, в общем конфиг загрузился, но http3 пока нет

Если закомментировать строку listen 443 ssl http2;  то сайт перестает работать.

проверка через это https://www.http3check.net/ выдала

Server does not advertise supported HTTP/3 or QUIC version on the same port.

В фаерволе UDP разрешил, но не помогло 


P0
На сайте с 17.06.2010
Offline
94
#5

больше идей нет.

можно попробовать собрать прошлые версии nginx. или собрать с поддержкой от самих nginx https://hg.nginx.org/nginx-quic/file/quic

D
На сайте с 28.06.2008
Offline
1101
#6

Ошибка найдена как всегда методом научного тыка.

Вместо строки

 add_header alt-svc 'h3-23=":443"; ma=86400'

нужно писать

add_header Alt-Svc 'h3=":443"';

и все заработало!

Вот итоги (среднее время, прогнал каждый вариант раз 20) и это с выключенным кешем браузера (кеш  nginx тоже пока выключен):

HTTP2 + php 8.2 + mariaDB 10.10 + nginx 1.22.0 + brotli


HTTP3  + php 8.2 + mariaDB 10.10 + nginx 1.22.0 + brotli


suffix
На сайте с 26.08.2010
Offline
329
#7
Dram #:

Ошибка найдена как всегда методом научного тыка.

Вместо строки

нужно писать

и все заработало!

Вот итоги (среднее время, прогнал каждый вариант раз 20) и это с выключенным кешем браузера (кеш  nginx тоже пока выключен):

HTTP2 + php 8.2 + mariaDB 10.10 + nginx 1.22.0 + brotli


HTTP3  + php 8.2 + mariaDB 10.10 + nginx 1.22.0 + brotli


Я уж подожду когда  openssl с http3 работать будет, а уж тогда и nginx классический будет это поддерживать. Ставить cloudflare-ский вариант и boringssl  нет желания.

Клуб любителей хрюш (https://www.babai.ru)
D
На сайте с 28.06.2008
Offline
1101
#8
Я тоже так решил. Оказалось эта надстройка не поддерживает post запросы, вообще, что полностью убивает ее смысл. 
D
На сайте с 28.06.2008
Offline
1101
#9
Если я правильно понимаю, анонсировали нативную поддержку https://habr.com/ru/post/716410/
suffix
На сайте с 26.08.2010
Offline
329
#10
Dram #:
Если я правильно понимаю, анонсировали нативную поддержку https://habr.com/ru/post/716410/

"

На момент написания статьи SSL/TLS, OpenSSL не поддерживают QUIC. Поэтому мы собираем бинарные дистрибутивы с пакетом-библиотекой quictls, который устанавливается автоматически в качестве зависимости.


"

Отбой - продолжаем ждать !

quictls
quictls
  • github.com
quictls has 2 repositories available. Follow their code on GitHub.

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий