Opened 13 months ago

Closed 11 months ago

Last modified 38 hours ago

#2484 closed defect (invalid)

When reuseport is not present with listen 443 quic, only HTTP/2 works not HTTP/3

Reported by: skygunner@… Owned by:
Priority: minor Milestone: nginx-1.26
Component: http/3 Version: 1.23.x
Keywords: reuseport Cc:
uname -a: Linux hostname.com 5.15.0-1032-oracle #38-Ubuntu SMP Thu Mar 23 19:30:10 UTC 2023 aarch64 aarch64 aarch64 GNU/Linux
nginx -V: nginx version: nginx/1.23.4 (quic-8347620e0e76-BoringSSL-2e13e36e7477cfe2ef48312634b1c34103da4899-brotli-more-njs-geoip-modsec-20230414155654)
built by gcc 11.3.0 (Ubuntu 11.3.0-1ubuntu1~22.04)
built with OpenSSL 1.1.1 (compatible; BoringSSL) (running with BoringSSL)
TLS SNI support enabled
configure arguments: --build=quic-8347620e0e76-BoringSSL-2e13e36e7477cfe2ef48312634b1c34103da4899-brotli-more-njs-geoip-modsec-20230414155654 --prefix=/etc/nginx --sbin-path=/usr/sbin/nginx --modules-path=/usr/lib/nginx/modules --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 --http-uwsgi-temp-path=/var/cache/nginx/uwsgi_temp --http-scgi-temp-path=/var/cache/nginx/scgi_temp --user=nginx --group=nginx --with-http_ssl_module --with-http_realip_module --with-http_addition_module --with-http_sub_module --with-http_dav_module --with-http_flv_module --with-http_mp4_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_random_index_module --with-http_secure_link_module --with-http_stub_status_module --with-http_auth_request_module --with-http_xslt_module=dynamic --with-http_image_filter_module=dynamic --with-http_geoip_module=dynamic --with-http_perl_module=dynamic --with-threads --with-stream --with-stream_ssl_module --with-stream_ssl_preread_module --with-stream_realip_module --with-stream_geoip_module=dynamic --with-http_slice_module --with-mail --with-mail_ssl_module --with-compat --with-file-aio --with-http_v2_module --with-http_v3_module --with-stream_quic_module --add-module=/usr/local/src/ngx_brotli --add-module=/usr/local/src/headers-more-nginx-module-0.34 --add-module=/usr/local/src/njs/nginx --add-dynamic-module=/usr/local/src/ngx_http_geoip2_module --add-dynamic-module=/usr/local/src/ModSecurity-nginx --with-cc-opt=-I../boringssl/include --with-ld-opt='-L../boringssl/build/ssl -L../boringssl/build/crypto'

Description

listen 443 quic;
If reuseport is not present with the above listen line, then only HTTP/2 works not HTTP/3. Add reuseport then it works fine. (chrome/firefox).

debug log:

2023/04/14 17:16:24 [debug] 188209#188209: *1 free: 0000AAAAFFA50830, unused: 2888
2023/04/14 17:16:24 [debug] 188209#188209: *1 free: 0000AAAAFFAB8130
2023/04/14 17:16:24 [debug] 188209#188209: quic recvmsg on 0.0.0.0:443, ready: 1
2023/04/14 17:16:24 [debug] 188209#188209: posix_memalign: 0000AAAAFF9D3E00:512 @16
2023/04/14 17:16:24 [debug] 188209#188209: malloc: 0000AAAAFFA50830:1250
2023/04/14 17:16:24 [debug] 188209#188209: *3 quic recvmsg: 220.233.6.16:13281 fd:10 n:1250
2023/04/14 17:16:24 [debug] 188209#188209: *3 http3 init session
2023/04/14 17:16:24 [debug] 188209#188209: *3 posix_memalign: 0000AAAAFFA50D20:512 @16
2023/04/14 17:16:24 [debug] 188209#188209: *3 add cleanup: 0000AAAAFFA50EE0
2023/04/14 17:16:24 [debug] 188209#188209: *3 event timer add: 10: 180000:11113282
2023/04/14 17:16:24 [debug] 188209#188209: *3 quic run
2023/04/14 17:16:24 [debug] 188209#188209: *3 quic packet rx long flags:c4 version:1
2023/04/14 17:16:24 [debug] 188209#188209: *3 quic packet rx init len:1232
2023/04/14 17:16:24 [debug] 188209#188209: *3 quic packet rx dcid len:8 80be092b143c86cd
2023/04/14 17:16:24 [debug] 188209#188209: *3 quic packet rx scid len:0 
2023/04/14 17:16:24 [debug] 188209#188209: *3 quic address validation token len:0 
2023/04/14 17:16:24 [debug] 188209#188209: *3 sendmsg: 107 of 107
2023/04/14 17:16:24 [debug] 188209#188209: *3 quic retry packet sent to 
2023/04/14 17:16:24 [debug] 188209#188209: *3 quic packet done rc:-4 level:init decr:0 pn:0 perr:0
2023/04/14 17:16:24 [debug] 188209#188209: *3 quic packet rejected rc:-4, cleanup connection
2023/04/14 17:16:24 [debug] 188209#188209: *3 reusable connection: 0
2023/04/14 17:16:24 [debug] 188209#188209: *3 run cleanup: 0000AAAAFFA50EE0
2023/04/14 17:16:24 [debug] 188209#188209: *3 event timer del: -1: 11113282
2023/04/14 17:16:24 [debug] 188209#188209: *3 free: 0000AAAAFFA50830
2023/04/14 17:16:24 [debug] 188209#188209: *3 free: 0000AAAAFF9D3E00, unused: 8
2023/04/14 17:16:24 [debug] 188209#188209: *3 free: 0000AAAAFFA50D20, unused: 40
2023/04/14 17:16:24 [debug] 188209#188209: quic recvmsg() not ready (11: Resource temporarily unavailable)
2023/04/14 17:16:24 [debug] 188209#188209: *1 http2 idle handler
2023/04/14 17:16:24 [debug] 188209#188209: *1 reusable connection: 0
2023/04/14 17:16:24 [debug] 188209#188209: *1 posix_memalign: 0000AAAAFF9CA1E0:4096 @16
2023/04/14 17:16:24 [debug] 188209#188209: *1 http2 read handler
2023/04/14 17:16:24 [debug] 188209#188209: *1 SSL_read: 158
2023/04/14 17:16:24 [debug] 188209#188209: *1 SSL_read: -1
2023/04/14 17:16:24 [debug] 188209#188209: *1 SSL_get_error: 2

Change History (3)

comment:1 by Sergey Kandaurov, 12 months ago

Please provide the full relevant nginx config w.r.t. the listen directives.

comment:2 by Sergey Kandaurov, 11 months ago

Resolution: invalid
Status: newclosed

Feedback timeout.

comment:3 by m.herasimovich, 38 hours ago

Milestone: nginx-1.25nginx-1.26

Milestone renamed

Note: See TracTickets for help on using tickets.