From f61fbdb3344e24d1221e4ff4e30dec684be1851e Mon Sep 17 00:00:00 2001
From: VirtuBox
Date: Tue, 23 Apr 2024 01:58:15 +0200
Subject: [PATCH 1/6] Add HTTP/3 QUIC support with LibreSSL
---
nginx-build.sh | 16 +++++++++++++++-
1 file changed, 15 insertions(+), 1 deletion(-)
diff --git a/nginx-build.sh b/nginx-build.sh
index 2cfa8df..2fb89f2 100755
--- a/nginx-build.sh
+++ b/nginx-build.sh
@@ -141,7 +141,7 @@ DIR_SRC="/usr/local/src"
NGINX_EE_VER=$(curl -m 5 --retry 3 -sL https://api.github.com/repos/VirtuBox/nginx-ee/releases/latest 2>&1 | jq -r '.tag_name')
NGINX_MAINLINE="$(curl -sL https://nginx.org/en/download.html 2>&1 | grep -E -o 'nginx\-[0-9.]+\.tar[.a-z]*' | awk -F "nginx-" '/.tar.gz$/ {print $2}' | sed -e 's|.tar.gz||g' | head -n 1 2>&1)"
NGINX_STABLE="$(curl -sL https://nginx.org/en/download.html 2>&1 | grep -E -o 'nginx\-[0-9.]+\.tar[.a-z]*' | awk -F "nginx-" '/.tar.gz$/ {print $2}' | sed -e 's|.tar.gz||g' | head -n 2 | grep 1.24 2>&1)"
-LIBRESSL_VER="3.7.2"
+LIBRESSL_VER="3.8.4"
if command_exists openssl; then
OPENSSL_BIN_VER=$(openssl version)
OPENSSL_VER=${OPENSSL_BIN_VER:0:15}
@@ -290,6 +290,18 @@ else
fi
+##################################
+# Set LibreSSL HTTP/3 QUIC
+##################################
+
+if "$LIBRESSL_VALID"; then
+ NGX_QUIC="--with-http_v3_module"
+ QUIC_VALID="YES"
+else
+ NGX_QUIC=""
+ QUIC_VALID="NO"
+fi
+
##################################
# Set Pagespeed module
##################################
@@ -331,6 +343,7 @@ echo -e " - Nginx release : $NGINX_VER"
}
[ -n "$LIBRESSL_VALID" ] && {
echo -e " - LIBRESSL : $LIBRESSL_VALID"
+ echo -e " - HTTP/3 QUIC : $QUIC_VALID"
}
echo " - Dynamic modules $DYNAMIC_MODULES_VALID"
echo " - Naxsi : $NAXSI_VALID"
@@ -892,6 +905,7 @@ _configure_nginx() {
--with-file-aio \
--with-threads \
$NGX_HPACK \
+ $NGX_QUIC \
--with-http_v2_module \
--with-http_ssl_module \
--with-pcre-jit \
From 15e9b68dc084d1ee7b920d75e3d7409dff515611 Mon Sep 17 00:00:00 2001
From: VirtuBox
Date: Tue, 23 Apr 2024 01:59:42 +0200
Subject: [PATCH 2/6] Update install script
---
nginx-build.sh | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/nginx-build.sh b/nginx-build.sh
index 2fb89f2..bf0046a 100755
--- a/nginx-build.sh
+++ b/nginx-build.sh
@@ -4,10 +4,10 @@
# -------------------------------------------------------------------------
# Website: https://virtubox.net
# GitHub: https://github.com/VirtuBox/nginx-ee
-# Copyright (c) 2019-2020 VirtuBox
+# Copyright (c) 2019-2024 VirtuBox
# This script is licensed under M.I.T
# -------------------------------------------------------------------------
-# Version 3.8.0 - 2023-05-08
+# Version 3.9.0 - 2024-04-23
# -------------------------------------------------------------------------
##################################
From c625f02a7d469b96fa3bc2c0d7b641f6af093fdb Mon Sep 17 00:00:00 2001
From: VirtuBox
Date: Tue, 23 Apr 2024 02:05:10 +0200
Subject: [PATCH 3/6] improve LibreSSL declaration
---
nginx-build.sh | 23 ++++-------------------
1 file changed, 4 insertions(+), 19 deletions(-)
diff --git a/nginx-build.sh b/nginx-build.sh
index bf0046a..b8e2ffd 100755
--- a/nginx-build.sh
+++ b/nginx-build.sh
@@ -274,6 +274,8 @@ fi
if [ "$LIBRESSL" = "y" ]; then
NGX_SSL_LIB="--with-openssl=../libressl"
+ NGX_QUIC="--with-http_v3_module"
+ QUIC_VALID="YES"
LIBRESSL_VALID="YES"
OPENSSL_OPT=""
else
@@ -284,31 +286,14 @@ else
OPENSSL_OPT="enable-tls1_3"
fi
fi
+ NGX_QUIC=""
+ QUIC_VALID="NO"
NGX_SSL_LIB=""
OPENSSL_VALID="from system"
LIBSSL_DEV="libssl-dev"
fi
-##################################
-# Set LibreSSL HTTP/3 QUIC
-##################################
-
-if "$LIBRESSL_VALID"; then
- NGX_QUIC="--with-http_v3_module"
- QUIC_VALID="YES"
-else
- NGX_QUIC=""
- QUIC_VALID="NO"
-fi
-
-##################################
-# Set Pagespeed module
-##################################
-
-NGX_PAGESPEED=""
-PAGESPEED_VALID="NO"
-
##################################
# Set Plesk configuration
##################################
From 1624a19c9cb8b307e147dc07ffd4b48aafeb236c Mon Sep 17 00:00:00 2001
From: VirtuBox
Date: Tue, 23 Apr 2024 02:15:56 +0200
Subject: [PATCH 4/6] Set http/3 globaly
---
nginx-build.sh | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/nginx-build.sh b/nginx-build.sh
index b8e2ffd..1d43aca 100755
--- a/nginx-build.sh
+++ b/nginx-build.sh
@@ -239,9 +239,11 @@ fi
if [ "$NGINX_RELEASE" = "2" ]; then
NGINX_VER="$NGINX_STABLE"
NGX_HPACK="--with-http_v2_hpack_enc"
+ NGX_QUIC=""
else
NGINX_VER="$NGINX_MAINLINE"
NGX_HPACK=""
+ NGX_QUIC="--with-http_v3_module"
fi
##################################
@@ -274,7 +276,6 @@ fi
if [ "$LIBRESSL" = "y" ]; then
NGX_SSL_LIB="--with-openssl=../libressl"
- NGX_QUIC="--with-http_v3_module"
QUIC_VALID="YES"
LIBRESSL_VALID="YES"
OPENSSL_OPT=""
@@ -286,7 +287,6 @@ else
OPENSSL_OPT="enable-tls1_3"
fi
fi
- NGX_QUIC=""
QUIC_VALID="NO"
NGX_SSL_LIB=""
OPENSSL_VALID="from system"
From 5120745823ae0c201d2525897a89f063ac17b557 Mon Sep 17 00:00:00 2001
From: VirtuBox
Date: Tue, 23 Apr 2024 07:42:54 +0200
Subject: [PATCH 5/6] Add HTTP/3 QUIC support
---
CHANGELOG.md | 11 +++++++++++
README.md | 23 +++++++++++++----------
nginx-build.sh | 20 ++++++++++++++------
3 files changed, 38 insertions(+), 16 deletions(-)
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 5f3290d..eb57e2d 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -6,6 +6,17 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
## [Unreleased] - XX-XX-XX
+## [3.8.0] - 2024-04-23
+
+### Added
+
+- `--with-http_v3_module` on Mainline release
+- Full HTTP/3 QUIC support on Mainline release with LibreSSL
+
+### Changed
+
+- LibreSSL release bumped to 3.8.4
+
## [3.7.1] - 2023-05-08
### Changed
diff --git a/README.md b/README.md
index 3e3a0ba..3719b66 100644
--- a/README.md
+++ b/README.md
@@ -45,13 +45,12 @@ Automated Nginx compilation from sources with additional modules support
* Nginx built-in modules selection
* Nginx Third-party modules selection
* Dynamic modules support
+* HTTP/3 QUIC Support with Mainline Release
* Brotli Support
-* TLS v1.3 support (Final)
+* TLS v1.3 support
* OpenSSL or LibreSSL
-* Cloudflare HPACK
* Cloudflare zlib
* Automated nginx updates cronjob
-* Compilation with GCC-7/9
* Security hardening and performance optimization enabled with proper GCC flags
* An option to omit nginx configuration, allowing usage of third party devops tools
@@ -59,8 +58,8 @@ Automated Nginx compilation from sources with additional modules support
## Additional Third-party modules
-Nginx current mainline release : **v1.23.4**
-Nginx current stable release : **v1.24.0**
+Nginx current mainline release : **v1.25.5** with HTTP/3 QUIC
+Nginx current stable release : **v1.24.0** with Cloudflare HTTP/2 HPACK
* [ngx_cache_purge](https://github.com/FRiCKLE/ngx_cache_purge)
* [headers-more-nginx-module](https://github.com/openresty/headers-more-nginx-module)
@@ -84,7 +83,7 @@ For Nginx http_ssl_module :
Optional modules :
-* [naxsi WAF](https://github.com/nbs-system/naxsi)
+* [naxsi WAF](https://github.com/wargio/naxsi)
* [nginx-rtmp-module](https://github.com/arut/nginx-rtmp-module)
---
@@ -120,6 +119,10 @@ Optional modules :
* 17.9.x
* 18.x (Obsidian)
+### HTTP/3 QUIC
+
+Full support of HTTP/3 QUIC is only available with Nginx mainline release and compiled with LibreSSL. More information [here](https://nginx.org/en/docs/http/ngx_http_v3_module.html).
+
---
## Usage
@@ -128,7 +131,7 @@ Optional modules :
**Default settings** :
-* mainline release
+* mainline release with HTTP/3
* openssl from system
* without naxsi
* without rtmp
@@ -155,7 +158,7 @@ bash <(wget -O - vtb.cx/nginx-ee || curl -sL vtb.cx/nginx-ee) --interactive
### Custom installation
-Example : Nginx stable release with naxsi
+Example : Nginx stable release HTTP/2 with naxsi
```bash
bash <(wget -O - vtb.cx/nginx-ee || curl -sL vtb.cx/nginx-ee) --stable --naxsi
@@ -165,7 +168,7 @@ bash <(wget -O - vtb.cx/nginx-ee || curl -sL vtb.cx/nginx-ee) --stable --naxsi
Nginx build options :
-* `--stable` : compile Nginx stable release
+* `--stable` : compile Nginx stable release with HTTP/2
* `--full` : Naxsi + RTMP
* `--dynamic` : Compile Nginx modules as dynamic modules
* `--noconf` : Compile Nginx without any configuring. Useful when you use devops tools like ansible.
@@ -198,7 +201,7 @@ Extras :
* [x] Add support for LibreSSL
* [x] Add noconf support
* [ ] Add support for config.inc build configuration
-* [ ] Add HTTP/3 QUIC support
+* [x] Add HTTP/3 QUIC support
---
diff --git a/nginx-build.sh b/nginx-build.sh
index 1d43aca..8d41395 100755
--- a/nginx-build.sh
+++ b/nginx-build.sh
@@ -7,7 +7,7 @@
# Copyright (c) 2019-2024 VirtuBox
# This script is licensed under M.I.T
# -------------------------------------------------------------------------
-# Version 3.9.0 - 2024-04-23
+# Version 3.8.0 - 2024-04-23
# -------------------------------------------------------------------------
##################################
@@ -26,19 +26,17 @@ _help() {
echo " -------------------------------------------------------------------- "
echo ""
echo "Usage: ./nginx-ee [modules]"
- echo "By default, Nginx-ee will compile the latest Nginx mainline release without Pagespeed, Naxsi or RTMP module"
+ echo "By default, Nginx-ee will compile the latest Nginx mainline release with HTTP/3 and without Naxsi or RTMP module"
echo " Options:"
echo " -h, --help ..... display this help"
echo " -i, --interactive ....... interactive installation"
echo " --stable ..... Nginx stable release"
- echo " --full ..... Nginx mainline release with Nasxi and RTMP module"
+ echo " --full ..... Nginx with Nasxi and RTMP module"
echo " --dynamic ..... Compile Nginx modules as dynamic"
echo " --noconf ..... Compile Nginx without any configuring. Useful when you use devops tools like ansible."
echo " Modules:"
echo " --naxsi ..... Naxsi WAF module"
echo " --rtmp ..... RTMP video streaming module"
- echo " --openssl-dev ..... Compile Nginx with OpenSSL 3.0.0-dev"
- echo " --openssl-system ..... Compile Nginx with OpenSSL from system lib"
echo " --libressl ..... Compile Nginx with LibreSSL"
echo ""
return 0
@@ -325,10 +323,20 @@ echo ""
echo -e " - Nginx release : $NGINX_VER"
[ -n "$OPENSSL_VALID" ] && {
echo -e " - OPENSSL : $OPENSSL_VER"
+ if [ "$NGINX_RELEASE" = "2" ]; then
+ echo -e " - HTTP/2 HPACK : YES"
+ else
+ echo -e " - with HTTP/3 : YES"
+ fi
+
}
[ -n "$LIBRESSL_VALID" ] && {
echo -e " - LIBRESSL : $LIBRESSL_VALID"
- echo -e " - HTTP/3 QUIC : $QUIC_VALID"
+ if [ "$NGINX_RELEASE" = "2" ]; then
+ echo -e " - HTTP/2 HPACK : YES"
+ else
+ echo -e " - HTTP/3 QUIC : YES"
+ fi
}
echo " - Dynamic modules $DYNAMIC_MODULES_VALID"
echo " - Naxsi : $NAXSI_VALID"
From ceec4f418fa273f23212479fc41c63d355b8c865 Mon Sep 17 00:00:00 2001
From: VirtuBox
Date: Tue, 23 Apr 2024 07:55:30 +0200
Subject: [PATCH 6/6] Update changelog and informations
---
CHANGELOG.md | 5 +++++
README.md | 2 +-
docs/index.md | 17 ++++++++++-------
3 files changed, 16 insertions(+), 8 deletions(-)
diff --git a/CHANGELOG.md b/CHANGELOG.md
index eb57e2d..a9e9355 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -16,6 +16,11 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
### Changed
- LibreSSL release bumped to 3.8.4
+- Update zlib to 1.2.13 by @WinSCaP in [#146](https://github.com/VirtuBox/nginx-ee/pull/146)
+
+### Fixed
+
+- Fix compile error due to Brotli by @janiosarmento in [#151](https://github.com/VirtuBox/nginx-ee/pull/152)
## [3.7.1] - 2023-05-08
diff --git a/README.md b/README.md
index 3719b66..76e5158 100644
--- a/README.md
+++ b/README.md
@@ -121,7 +121,7 @@ Optional modules :
### HTTP/3 QUIC
-Full support of HTTP/3 QUIC is only available with Nginx mainline release and compiled with LibreSSL. More information [here](https://nginx.org/en/docs/http/ngx_http_v3_module.html).
+**Full support of HTTP/3 QUIC is only available with Nginx mainline release and compiled with LibreSSL**. More information [here](https://nginx.org/en/docs/http/ngx_http_v3_module.html).
---
diff --git a/docs/index.md b/docs/index.md
index 78d9d55..71cf4b0 100644
--- a/docs/index.md
+++ b/docs/index.md
@@ -42,19 +42,18 @@ Automated Nginx compilation from sources with additional modules support
Nginx built-in modules selection
Nginx Third-party modules selection
Dynamic modules support
+HTTP/3 QUIC Support with Mainline Release
Brotli Support
TLS v1.3 support (Final)
OpenSSL or LibreSSL
-Cloudflare HPACK
Cloudflare zlib
Automated nginx updates cronjob
-Compilation with GCC-7/9
Security hardening and performance optimization enabled with proper GCC flags
Additional Third-party modules
-Nginx current mainline release : v1.23.4
-Nginx current stable release : v1.24.0
+Nginx current mainline release : v1.25.5 with HTTP/3 QUIC
+Nginx current stable release : v1.24.0
with Cloudflare HTTP/2 HPACK
Optional modules :
@@ -109,12 +108,15 @@ Nginx current stable release : v1.24.0
17.9.x
18.x (Obsidian)
+### HTTP/3 QUIC
+Full support of HTTP/3 QUIC is only available with Nginx mainline release and compiled with LibreSSL** . More information [here](https://nginx.org/en/docs/http/ngx_http_v3_module.html).
+
Usage
One-Step Automated Install
Default settings :
-mainline release
+mainline release with HTTP/3
openssl from system lib
without naxsi
without rtmp
@@ -131,7 +133,7 @@ sudo bash nginx-build.sh
bash <(wget -O - vtb.cx/nginx-ee || curl -sL vtb.cx/nginx-ee) --interactive
Custom installation
-Example : Nginx stable release with naxsi
+Example : Nginx stable release with HTTP/2 HPACK with naxsi
bash <(wget -O - vtb.cx/nginx-ee || curl -sL vtb.cx/nginx-ee) --stable --naxsi
Options available
@@ -177,6 +179,7 @@ Feel free to use the custom Nginx package built for WordOps and available on Add openssl release choice
Add more compilation presets
Add support for LibreSSL
+ Add support for HTTP/3 QUIC