-
Notifications
You must be signed in to change notification settings - Fork 1.8k
Description
I have read these issues:
- please add httpv3 protocol #485
- Image nginx: 1.25.4-alpine3.18 does not have support for HTTPS enabled, and after container startup, an error message is reported using HTTP 3 #867
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:
- the nginx-version
- the SSL/TLS library used
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:
- enabeling http3/quic in the config works just fine, BUT your browser (or curl) will not actually use it!
- bascially there are two options: 1.) wait ½-1year and use it with OpenSSL. 2.) use BoringSSL to use it right now!
I used this curl command to verify the actual HTTP Version the server is using:
curl -sIk --http3 https://sub.dom.tld -o/dev/null -w '%{http_version}\n'
or
curl -sIk --http3-only https://sub.dom.tld -o/dev/null -w '%{http_version}\n'
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
:
services:
nginx:
image: nginx:1-alpine-slim
container_name: nginx
hostname: nginx
ports:
- "443:443"
- "443:443/udp"
volumes:
- "./nginx/templates/:/etc/nginx/templates/:ro"
- "./nginx/ssl/:/etc/ssl/own/:ro"
healthcheck:
test: ["CMD-SHELL", "nc -vz -w1 $(hostname) 443"]
interval: 1s
timeout: 1s
retries: 30
deploy:
resources:
limits:
memory: 500M
restart: unless-stopped
if you just open the port :443
this applies to the tcp
-protocol only!
I would love to get some feedback from the maintainer of this awesome package and I am ofc open for discussion. :)