diff --git a/CHANGELOG.md b/CHANGELOG.md index a9e9355..ae76810 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,16 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), ## [Unreleased] - XX-XX-XX +## [3.8.1] - 2024-04-24 + +### Changed + +- Nginx stable release bumped to 1.26.0 +- HTTP/3 now available on both mainline and stable release +- Always download latest zlib library if zlib-cf not supported +- Always download the latest libressl release +- HTTP/2 HPACK removed + ## [3.8.0] - 2024-04-23 ### Added diff --git a/README.md b/README.md index 76e5158..4b3951e 100644 --- a/README.md +++ b/README.md @@ -7,7 +7,7 @@

-Automated Nginx compilation from sources with additional modules support +Automated Nginx compilation from sources with HTTP/3 QUIC and additional modules support

--- @@ -45,7 +45,7 @@ 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 +* HTTP/3 QUIC Support * Brotli Support * TLS v1.3 support * OpenSSL or LibreSSL @@ -59,7 +59,7 @@ Automated Nginx compilation from sources with additional modules support ## Additional Third-party modules Nginx current mainline release : **v1.25.5** with HTTP/3 QUIC -Nginx current stable release : **v1.24.0** with Cloudflare HTTP/2 HPACK +Nginx current stable release : **v1.26.0** with HTTP/3 QUIC * [ngx_cache_purge](https://github.com/FRiCKLE/ngx_cache_purge) * [headers-more-nginx-module](https://github.com/openresty/headers-more-nginx-module) @@ -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 LibreSSL**. More information [here](https://nginx.org/en/docs/http/ngx_http_v3_module.html). --- @@ -158,7 +158,7 @@ bash <(wget -O - vtb.cx/nginx-ee || curl -sL vtb.cx/nginx-ee) --interactive ### Custom installation -Example : Nginx stable release HTTP/2 with naxsi +Example : Nginx stable release HTTP/3 with naxsi ```bash bash <(wget -O - vtb.cx/nginx-ee || curl -sL vtb.cx/nginx-ee) --stable --naxsi @@ -168,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 with HTTP/2 +* `--stable` : compile Nginx stable release with HTTP/3 * `--full` : Naxsi + RTMP * `--dynamic` : Compile Nginx modules as dynamic modules * `--noconf` : Compile Nginx without any configuring. Useful when you use devops tools like ansible. diff --git a/docs/index.md b/docs/index.md index 71cf4b0..97ca796 100644 --- a/docs/index.md +++ b/docs/index.md @@ -42,7 +42,7 @@ 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
  • +
  • HTTP/3 QUIC Support
  • Brotli Support
  • TLS v1.3 support (Final)
  • OpenSSL or LibreSSL
  • @@ -52,8 +52,8 @@ Automated Nginx compilation from sources with additional modules support

    Additional Third-party modules

    -

    Nginx current mainline release : v1.25.5 with HTTP/3 QUIC -Nginx current stable release : v1.24.0

    with Cloudflare HTTP/2 HPACK +

    Nginx current mainline release : v1.25.5 with HTTP/3 QUIC

    +

    Nginx current stable release : v1.26.0 with HTTP/3 QUIC

    ### 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 LibreSSL**. More information [here](https://nginx.org/en/docs/http/ngx_http_v3_module.html).


    Usage

    @@ -133,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 HTTP/2 HPACK with naxsi

    +

    Example : Nginx stable release with HTTP/3 with naxsi

    bash <(wget -O - vtb.cx/nginx-ee || curl -sL vtb.cx/nginx-ee) --stable --naxsi
     

    Options available

    diff --git a/etc/nginx/nginx.conf b/etc/nginx/nginx.conf index 113807a..16d4383 100644 --- a/etc/nginx/nginx.conf +++ b/etc/nginx/nginx.conf @@ -36,7 +36,7 @@ http server_tokens off; reset_timedout_connection on; - add_header X-Powered-By "Nginx-ee v3.5.2 - Optimized by VirtuBox"; + add_header X-Powered-By "Nginx-ee v3.8.1 - Optimized by VirtuBox"; add_header rt-Fastcgi-Cache $upstream_cache_status; # Limit Request diff --git a/nginx-build.sh b/nginx-build.sh index 8d41395..61b8cab 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.8.0 - 2024-04-23 +# Version 3.8.1 - 2024-04-24 # ------------------------------------------------------------------------- ################################## @@ -26,7 +26,7 @@ _help() { echo " -------------------------------------------------------------------- " echo "" echo "Usage: ./nginx-ee [modules]" - echo "By default, Nginx-ee will compile the latest Nginx mainline release with HTTP/3 and without Naxsi or RTMP module" + echo "By default, Nginx-ee will compile the latest Nginx mainline release without Naxsi or RTMP module" echo " Options:" echo " -h, --help ..... display this help" echo " -i, --interactive ....... interactive installation" @@ -138,8 +138,8 @@ fi 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.8.4" +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.26 2>&1)" +LIBRESSL_VER="$(curl https://ftp.openbsd.org/pub/OpenBSD/LibreSSL/ 2>&1 | grep -E -o 'libressl\-[0-9.]+\.tar[.a-z]*' | awk -F "libressl-" '/.tar.gz$/ {print $2}' | sed -e 's|.tar.gz||g' | sort -r | head -n 1)" if command_exists openssl; then OPENSSL_BIN_VER=$(openssl version) OPENSSL_VER=${OPENSSL_BIN_VER:0:15} @@ -150,7 +150,6 @@ TLS13_CIPHERS="TLS13+AESGCM+AES256:TLS13+AESGCM+AES128:TLS13+CHACHA20:EECDH+CHAC readonly OS_ARCH="$(uname -m)" OS_DISTRO_FULL="$(lsb_release -ds)" readonly DISTRO_ID="$(lsb_release -si)" -readonly DISTRO_CODENAME="$(lsb_release -sc)" # Colors CSI='\033[' @@ -206,9 +205,7 @@ if [ "$INTERACTIVE_SETUP" = "1" ]; then while [[ "$SSL_LIB_CHOICE" != "1" && "$SSL_LIB_CHOICE" != "2" ]]; do echo -e "Select an option [1-2]: " && read -r SSL_LIB_CHOICE done - if [ "$SSL_LIB_CHOICE" = "1" ]; then - OPENSSL_LIB=3 - else + if [ "$SSL_LIB_CHOICE" = "2" ]; then LIBRESSL="y" fi echo -e '\nDo you want NAXSI WAF (still experimental)? (y/n)' @@ -236,11 +233,9 @@ fi if [ "$NGINX_RELEASE" = "2" ]; then NGINX_VER="$NGINX_STABLE" - NGX_HPACK="--with-http_v2_hpack_enc" - NGX_QUIC="" + NGX_QUIC="--with-http_v3_module" else NGINX_VER="$NGINX_MAINLINE" - NGX_HPACK="" NGX_QUIC="--with-http_v3_module" fi @@ -285,7 +280,6 @@ else OPENSSL_OPT="enable-tls1_3" fi fi - QUIC_VALID="NO" NGX_SSL_LIB="" OPENSSL_VALID="from system" LIBSSL_DEV="libssl-dev" @@ -323,20 +317,13 @@ 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 + echo -e " - with HTTP/3 : YES" } [ -n "$LIBRESSL_VALID" ] && { echo -e " - LIBRESSL : $LIBRESSL_VALID" - if [ "$NGINX_RELEASE" = "2" ]; then - echo -e " - HTTP/2 HPACK : YES" - else - echo -e " - HTTP/3 QUIC : YES" - fi + echo -e " - HTTP/3 QUIC : YES" + } echo " - Dynamic modules $DYNAMIC_MODULES_VALID" echo " - Naxsi : $NAXSI_VALID" @@ -471,10 +458,8 @@ _dynamic_setup() { } ################################## -# Install gcc7 or gcc8 from PPA +# Install gcc ################################## -# gcc7 if Nginx is compiled with RTMP module -# otherwise gcc8 is used _gcc_setup() { echo -ne ' Installing gcc [..]\r' @@ -529,12 +514,12 @@ _download_modules() { echo -ne ' Downloading additionals modules [..]\r' if { echo "### downloading additionals modules ###" - MODULES='FRiCKLE/ngx_cache_purge openresty/memc-nginx-module + MODULES='openresty/memc-nginx-module simpl/ngx_devel_kit openresty/headers-more-nginx-module openresty/echo-nginx-module yaoweibin/ngx_http_substitutions_filter_module openresty/redis2-nginx-module openresty/srcache-nginx-module openresty/set-misc-nginx-module sto/ngx_http_auth_pam_module - vozlt/nginx-module-vts centminmod/ngx_http_redis' + vozlt/nginx-module-vts centminmod/ngx_http_redis nginx-modules/ngx_cache_purge' for MODULE in $MODULES; do _gitget "$MODULE" done @@ -589,9 +574,9 @@ _download_zlib() { echo "### configure zlib-cf ###" ./configure --prefix=/usr/local/zlib-cf else - echo "### downloading zlib 1.2.13 ###" + echo "### downloading zlib latest ###" rm -rf zlib - curl -sL http://zlib.net/zlib-1.2.13.tar.gz | /bin/tar zxf - -C "$DIR_SRC" + curl -sL http://zlib.net/current/zlib.tar.gz | /bin/tar zxf - -C "$DIR_SRC" mv zlib-1.2.13 zlib fi @@ -633,67 +618,6 @@ _download_brotli() { } -################################## -# Download and patch OpenSSL -################################## - -_download_openssl_dev() { - - cd "$DIR_SRC" || exit 1 - if { - echo -ne ' Downloading openssl [..]\r' - - { - if [ -d /usr/local/src/openssl ]; then - if [ ! -d /usr/local/src/openssl/.git ]; then - echo "### removing openssl extracted archive ###" - rm -rf /usr/local/src/openssl - echo "### cloning openssl ###" - git clone --depth=50 https://github.com/openssl/openssl.git /usr/local/src/openssl - cd /usr/local/src/openssl || exit 1 - echo "### git checkout commit ###" - #git checkout $OPENSSL_COMMIT - else - cd /usr/local/src/openssl || exit 1 - echo "### reset openssl to master and clean patches ###" - git fetch --all - git reset --hard origin/master - git clean -f - #git checkout $OPENSSL_COMMIT - fi - else - echo "### cloning openssl ###" - git clone --depth=50 https://github.com/openssl/openssl.git /usr/local/src/openssl - cd /usr/local/src/openssl || exit 1 - echo "### git checkout commit ###" - #git checkout $OPENSSL_COMMIT - fi - } >>/tmp/nginx-ee.log 2>&1 - - { - if [ -d /usr/local/src/openssl-patch/.git ]; then - cd /usr/local/src/openssl-patch || exit 1 - git pull origin master - else - git clone --depth=50 https://github.com/VirtuBox/openssl-patch.git /usr/local/src/openssl-patch - fi - cd /usr/local/src/openssl || exit 1 - # apply openssl ciphers patch - echo "### openssl ciphers patch ###" - #patch -p1 <../openssl-patch/openssl-equal-3.0.0-dev_ciphers.patch - } >>/tmp/nginx-ee.log 2>&1 - - }; then - echo -ne " Downloading openssl [${CGREEN}OK${CEND}]\\r" - echo -ne '\n' - else - echo -e " Downloading openssl [${CRED}FAIL${CEND}]" - echo -e '\n Please look at /tmp/nginx-ee.log\n' - exit 1 - fi - -} - ################################## # Download LibreSSL ################################## @@ -706,8 +630,8 @@ _download_libressl() { { rm -rf /usr/local/src/libressl - curl -sL http://ftp.openbsd.org/pub/OpenBSD/LibreSSL/libressl-${LIBRESSL_VER}.tar.gz | /bin/tar xzf - -C "$DIR_SRC" - mv /usr/local/src/libressl-${LIBRESSL_VER} /usr/local/src/libressl + curl -sL "http://ftp.openbsd.org/pub/OpenBSD/LibreSSL/libressl-$LIBRESSL_VER.tar.gz" | /bin/tar xzf - -C "$DIR_SRC" + mv "/usr/local/src/libressl-$LIBRESSL_VER" /usr/local/src/libressl } >>/tmp/nginx-ee.log 2>&1 }; then @@ -789,12 +713,7 @@ _patch_nginx() { echo -ne ' Applying nginx patches [..]\r' { - if [ "$NGINX_RELEASE" = "2" ]; then - curl -sL https://raw.githubusercontent.com/kn007/patch/master/nginx_for_1.23.4.patch | patch -p1 - else - curl -sL https://raw.githubusercontent.com/kn007/patch/master/nginx_dynamic_tls_records.patch | patch -p1 - fi - #curl -sL https://raw.githubusercontent.com/kn007/patch/master/nginx_auto_using_PRIORITIZE_CHACHA.patch | patch -p1 + curl -sL https://raw.githubusercontent.com/kn007/patch/master/nginx_dynamic_tls_records.patch | patch -p1 } >>/tmp/nginx-ee.log 2>&1 }; then @@ -897,7 +816,6 @@ _configure_nginx() { $NGX_USER \ --with-file-aio \ --with-threads \ - $NGX_HPACK \ $NGX_QUIC \ --with-http_v2_module \ --with-http_ssl_module \ @@ -1125,13 +1043,7 @@ fi if [ "$LIBRESSL" = "y" ]; then _download_libressl else - if [ "$OPENSSL_LIB" = "2" ]; then - _download_openssl_dev - elif [ "$OPENSSL_LIB" = "3" ]; then - sleep 1 - else - sleep 1 - fi + sleep 1 fi _download_nginx _patch_nginx