All Projects → RanadeepPolavarapu → Docker Nginx Http3

RanadeepPolavarapu / Docker Nginx Http3

Licence: mit
Alpine Linux image with Nginx 1.19.4 (mainline) with HTTP/3 (QUIC), TLSv1.3, 0-RTT, brotli, NJS support, and 10 MB size. All built on the bleeding edge for max performance. Built on the edge, for the edge.

Projects that are alternatives of or similar to Docker Nginx Http3

Katwebx
An extremely fast static web server and reverse proxy for the modern web.
Stars: ✭ 39 (-95.24%)
Mutual labels:  http2, tls13, brotli
Nginx Autoinstall
Compile Nginx from source with custom modules on Debian and Ubuntu
Stars: ✭ 443 (-45.98%)
Mutual labels:  http2, brotli, nginx
Nginx Ee
Automated Nginx compilation from sources with additional modules support. Compatible with WordOps, EasyEngine & Plesk
Stars: ✭ 132 (-83.9%)
Mutual labels:  tls13, brotli, nginx
Setup Nginx Webserver
🚀Setup a perfect webserver on CentOS/Redhat 7.x guide with understanding.
Stars: ✭ 65 (-92.07%)
Mutual labels:  http2, brotli, nginx
Siris
DEPRECATED: The community driven fork of Iris. The fastest web framework for Golang!
Stars: ✭ 146 (-82.2%)
Mutual labels:  http2, quic, tls
gost
GO Simple Tunnel - a simple tunnel written in golang
Stars: ✭ 8,395 (+923.78%)
Mutual labels:  tls, http2, quic
Algernon
🎩 Small self-contained pure-Go web server with Lua, Markdown, HTTP/2, QUIC, Redis and PostgreSQL support
Stars: ✭ 1,880 (+129.27%)
Mutual labels:  http2, quic, tls13
Gsnova
Private proxy solution & network troubleshooting tool.
Stars: ✭ 509 (-37.93%)
Mutual labels:  http2, quic, tls
Illustrated Tls13
The Illustrated TLS 1.3 Connection: Every byte explained
Stars: ✭ 372 (-54.63%)
Mutual labels:  tls, tls13
Nghttp2
nghttp2 - HTTP/2 C Library and tools
Stars: ✭ 3,868 (+371.71%)
Mutual labels:  http2, quic
Ssl Proxy
🔒 Simple zero-config SSL reverse proxy with real autogenerated certificates (LetsEncrypt, self-signed, provided)
Stars: ✭ 427 (-47.93%)
Mutual labels:  tls, nginx
Tlsfuzzer
SSL and TLS protocol test suite and fuzzer
Stars: ✭ 335 (-59.15%)
Mutual labels:  tls, tls13
Wolfmqtt
wolfMQTT is a small, fast, portable MQTT client implementation, including support for TLS 1.3.
Stars: ✭ 316 (-61.46%)
Mutual labels:  tls, tls13
Lsquic
LiteSpeed QUIC and HTTP/3 Library
Stars: ✭ 727 (-11.34%)
Mutual labels:  quic, tls13
Jetty.project
Eclipse Jetty® - Web Container & Clients - supports HTTP/2, HTTP/1.1, HTTP/1.0, websocket, servlets, and more
Stars: ✭ 3,260 (+297.56%)
Mutual labels:  http2, tls
Node Libcurl
libcurl bindings for Node.js
Stars: ✭ 447 (-45.49%)
Mutual labels:  http2, quic
Ace
HTTP web server and client, supports http1 and http2
Stars: ✭ 295 (-64.02%)
Mutual labels:  http2, tls
Tempesta
The Linux Application Delivery Controller
Stars: ✭ 429 (-47.68%)
Mutual labels:  http2, tls
Fatt
FATT /fingerprintAllTheThings - a pyshark based script for extracting network metadata and fingerprints from pcap files and live network traffic
Stars: ✭ 490 (-40.24%)
Mutual labels:  quic, tls
Blinksocks
A framework for building composable proxy protocol stack.
Stars: ✭ 587 (-28.41%)
Mutual labels:  http2, tls

docker-nginx-http3

Docker Pulls Docker Cloud Build Status Docker Cloud Automated build MicroBadger GitHub Contributor Covenant

Alpine Linux image with nginx 1.19.5 (mainline) with HTTP/3 (QUIC), TLSv1.3, 0-RTT, brotli, NJS, Cookie-Flag support. All built on the bleeding edge. Built on the edge, for the edge.

HTTP/3 support provided from the smart people at CloudFlare with the cloudflare/quiche project.

Images for this are available on Docker Hub.

Latest: docker pull ranadeeppolavarapu/nginx-http3

Usage

This is a base image like the default nginx image. It is meant to be used as a drop-in replacement for the nginx base image.

Best practice example Nginx configs are available in this repo. See nginx.conf and h3.nginx.conf.

Example:

# Base Nginx HTTP/3 Image
FROM ranadeeppolavarapu/nginx-http3:latest

# Copy your certs.
COPY localhost.key /etc/ssl/private/
COPY localhost.pem /etc/ssl/

# Copy your configs.
COPY nginx.conf /etc/nginx/
COPY h3.nginx.conf /etc/nginx/conf.d/

H3 runs over UDP so, you will need to port map both TCP and UDP. Ex: docker run -p 80:80 -p 443:443/tcp -p 443:443/udp ...

NOTE: Please note that you need a valid CA signed certificate for the client to upgrade you to HTTP/3. Let's Encrypt is a option for getting a free valid CA signed certificate.

Contributing

Contributions are welcome. Please feel free to contribute 😊.

Features

Future Additions

Possible additions in the future pending IETF spec approvals.

HTTP/3 ENABLED!

Using Chrome Canary with the following CLI flags:

--flag-switches-begin --enable-quic --quic-version=h3-29 --enable-features=EnableTLS13EarlyData --flag-switches-end

Run on Mac OS (darwin):

"/Applications/Google Chrome Canary.app Contents/MacOS/Google Chrome Canary" \
  --flag-switches-begin \
  --enable-quic \
  --quic-version=h3-29 \
  --enable-features=EnableTLS13EarlyData \
  --flag-switches-end

Windows:

Windows Chrome Canary

HTTP/3 (QUIC) Proof

Since HTTP/3 is experimental, we have to be sensible with it. Therefore, below is HTTP/3 in production on one of my web apps 🙃.

h3

HTTP/2 with Server Push

alt

TLS v1.3

ssllabs

0-RTT Proof

tls-0-rtt

Testing 0-RTT

host=domain.example.com # Replace your domain.
echo -e "GET / HTTP/1.1\r\nHost: $host\r\nConnection: close\r\n\r\n" > request.txt
openssl s_client -connect $host:443 -tls1_3 -sess_out session.pem -ign_eof < request.txt
openssl s_client -connect $host:443 -tls1_3 -sess_in session.pem -early_data request.txt
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].