-
Notifications
You must be signed in to change notification settings - Fork 1.7k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
HTTP3/QUIC not working - please switch to BoringSSL (or LibreSSL or quicTLS) #935
Comments
Hi @the-hotmann! nginx in current docker images works absolutely fine with http3 using openssl via compatibility layer shim nginx team developed. I suppose something is not configured right in your scenario, so let me illustrate it with my test setup:
As you can see, nginx and curl talk http3 here. |
@thresheek thank you for your swift response. I ofc will test again and report back. |
This is my config:
But when I run:
I get the following:
Notice this:
why does curl (the very same container you ran not offer h3? Thanks for looking into this! :) P.S.:
|
You probably have some other configuration you didnt mention in this snippet. This works fine for me (I've only changed the SSL certificate locations):
|
Yes, there is another vhost, but this should not affect this one. Which nginx image exactly are you using? |
It's |
Ok, I use I found the issue. If I use Works:
does not work:
Could you please try it again with ports and see if it still works for you? Thanks! If Thanks in advance! |
I am using a bridge network, since I don't specify anything in particular to change this mode. This is confirmed by e.g. a docker inspect in #935 (comment), since I'm looking for a network named bridge. |
I probably should add, that I am using |
This issue seems to be related to: moby/moby#15127 What partially fixed the issue (now I can reproduce your case):
In the issue was described, that opening udp solely will not work, but you need to bind it to your public ip (or local IP, if you want to access it locally). So replace:
with
(use your hosts IP instead of When I not use docker curl-http2 container on my host I get HTTP3, if I use it remotely it does not work and falls back to HTTP2. @thresheek I wonder how it could work for you, if you never tagged it on the hosts IP.. |
I've actually tried both - inside the bridged network from another container as posted here in this issue, and publishing the ports (not ip:ports), and testing the access from the other machine... For that matter, I'm testing on Ubuntu 22.04 aarch64, with:
And the "remote" machine I also tested from runs Alpine Linux. |
My machine runs Ubuntu 22 aswell. As for now, I would like to keep this issue open and inform here about news. |
I have read these issues:
and think that most people now think, that this dockerized version of Nginx will support HTTP3/QUIC - but it does not, since it is using OpenSSL. The
The OpenSSL Compatibility Layer
at least does not work for me.Since Nginx itself supports HTTP3/QUIC, but OpenSSL does not
LINK
this dockerized version of Nginx (which I love!) does not support HTTP3/QUIC, becasue both things must support it:OpenSSL plans to support HTTP3 for servers from the end of 2024 - but just experimental first (in v3.4.x).
Since this is the current situation I would love to ask to add an additional build (especially the alpine ones) with the addition
-boringssl
which people (liek me) can use to use and test with HTTP3/QUIC before somewhen OpenSSL supports it.Note:
I used this curl command to verify the actual HTTP Version the server is using:
or
Alternatively you could use the Browsers Dev-Tools to check which protocol actually is getting used - but I prefer the curl version. (curl version should be newer than
v8.0.0
)Also please keep in mind, that if you want to use HTTP3/QUIC you need to allow the
udp
-protocol on Port:443
:if you just open the port
:443
this applies to thetcp
-protocol only!I would love to get some feedback from the maintainer of this awesome package and I am ofc open for discussion. :)
The text was updated successfully, but these errors were encountered: