|
1 | 1 | NGINX 1.25 base image
|
2 | 2 |
|
3 |
| -**Don't use in production!!!** |
| 3 | +### HTTP/3 Support |
| 4 | + |
| 5 | +**HTTP/3 support is experimental and under development** |
| 6 | + |
| 7 | +[HTTP/3](https://datatracker.ietf.org/doc/html/rfc9114)\ |
| 8 | +[QUIC](https://datatracker.ietf.org/doc/html/rfc9000) |
| 9 | + |
| 10 | +[According to the documentation, NGINX 1.25.0 or higher supports HTTP/3:](https://nginx.org/en/docs/quic.html) |
| 11 | + |
| 12 | +> Support for QUIC and HTTP/3 protocols is available since 1.25.0. |
| 13 | +
|
| 14 | +But this requires adding a new flag during the build: |
| 15 | + |
| 16 | +> When configuring nginx, it is possible to enable QUIC and HTTP/3 using the --with-http_v3_module configuration parameter. |
| 17 | +
|
| 18 | +[We have added this flag](https://github.com/kubernetes/ingress-nginx/pull/11470), but it is not enough to use HTTP/3 in ingress-nginx, this is the first step. |
| 19 | + |
| 20 | +The next steps will be: |
| 21 | + |
| 22 | +1. **Waiting for OpenSSL 3.4.**\ |
| 23 | + The main problem is, that we still use OpenSSL (3.x) and it does not support the important mechanism of TLS 1.3 - [early_data](https://datatracker.ietf.org/doc/html/rfc8446#section-2.3): |
| 24 | + |
| 25 | + > Otherwise, the OpenSSL compatibility layer will be used that does not support early data. |
| 26 | + |
| 27 | + [And although another part of the documentation says that the directive is supported with OpenSSL:](https://nginx.org/en/docs/http/ngx_http_ssl_module.html#ssl_early_data) |
| 28 | + |
| 29 | + > The directive is supported when using OpenSSL 1.1.1 or higher. |
| 30 | + |
| 31 | + But this is incomplete support, because OpenSSL does not support this feature, and [it has only client side support:](https://github.com/openssl/openssl) |
| 32 | + |
| 33 | + > ... the QUIC (currently client side only) version 1 protocol |
| 34 | + |
| 35 | + [And also there are some issues even with client side](https://github.com/openssl/openssl/discussions/23339) |
| 36 | + |
| 37 | + Due to this, we currently have incomplete HTTP/3 support, without important security and performance features.\ |
| 38 | + But the good news is that [OpenSSL plans to add server-side support in 3.4](https://www.openssl.org/roadmap.html): |
| 39 | + |
| 40 | + > Server-side QUIC support |
| 41 | + |
| 42 | + [Overview of SSL libraries(HAProxy Documentation)](https://github.com/haproxy/wiki/wiki/SSL-Libraries-Support-Status#tldr) |
| 43 | + |
| 44 | +2. **Adding [parameters](https://nginx.org/en/docs/http/ngx_http_v3_module.html) to the configmap to configure HTTP/3 and quic(enableHTTP3, enableHTTP/0.9, maxCurrentStream, and so on).** |
| 45 | +3. **Adding options to the nginx config template(`listen 443 quic` to server blocks and `add_header Alt-Svc 'h3=":8443"; ma=86400';` to location blocks).** |
| 46 | +4. **Opening the https port for UDP in the container(because QUIC uses UDP).** |
| 47 | +5. **Adding tests.** |
0 commit comments