invalid parameter "quic" on new sites for Ubuntu 22.04 aarch64 (nginx/1.21.4) - Vhost Template Mismatch #30

Closed
opened 2026-04-05 20:25:19 +02:00 by MrUnknownDE · 0 comments
Owner

Originally created by @w3K-one on 10/27/2025

CloudPanel version(s) affected

2.5.2

Description

Bug Description

On a CloudPanel 2.5.2 installation running on Ubuntu 22.04.5 LTS (aarch64/ARM64), Nginx fails to start after a new site is created and the server is restarted. One can also see the failures if vhost is edited on the CloudPanel web interface.

The error log (and nginx -t) shows nginx: [emerg] invalid parameter "quic".

This appears to be a version mismatch:

  1. The CloudPanel 2.5.2 frontend generates new vhost files with HTTP/3 (quic, http3 off;) directives.
  2. The CloudPanel package repository (d2xpdm4jldf31f.cloudfront.net) provides an Nginx binary (1.21.4-15+clp-jammy) that was not compiled with HTTP/3 support (--with-http_v3_module).
  3. The new vhost template also tries to include /etc/nginx/global_settings, which does not exist in this package.

Environment

  • CloudPanel Version: 2.5.2
  • Operating System: Ubuntu 22.04.5 LTS (Jammy Jellyfish)
  • Architecture: aarch64 (ARM64)
  • Nginx Version: nginx/1.21.4 (Full package: 1.21.4-15+clp-jammy)

Nginx Build Configuration (nginx -V)

The installed Nginx build is missing the required HTTP/3 module. Note the presence of --with-http_v2_module but the absence of --with-http_v3_module.

nginx version: nginx/1.21.4
built with OpenSSL 3.0.2 15 Mar 2022
TLS SNI support enabled
configure arguments: --with-cc-opt='-g -O2 -ffile-prefix-map=/home/clp/packaging/nginx/tmp/nginx-1.21.4=. -flto=auto -ffat-lto-objects -flto=auto -ffat-lto-objects -fstack-protector-strong -Wformat -Werror=format-security -fPIC -Wdate-time -D_FORTIFY_SOURCE=2' --with-ld-opt='-Wl,-Bsymbolic-functions -flto=auto -ffat-lto-objects -flto=auto -Wl,-z,relro -Wl,-z,now -fPIC' --prefix=/usr/share/nginx --conf-path=/etc/nginx/nginx.conf --http-log-path=/var/log/nginx/access.log --error-log-path=/var/log/nginx/error.log --lock-path=/var/lock/nginx.lock --pid-path=/run/nginx.pid --modules-path=/usr/lib/nginx/modules --http-client-body-temp-path=/var/lib/nginx/body --http-fastcgi-temp-path=/var/lib/nginx/fastcgi --http-proxy-temp-path=/var/lib/nginx/proxy --http-scgi-temp-path=/var/lib/nginx/scgi --http-uwsgi-temp-path=/var/lib/nginx/uwsgi --with-debug --with-pcre-jit --with-http_ssl_module --with-http_stub_status_module --with-http_realip_module --with-http_auth_request_module --with-http_v2_module --with-http_dav_module --with-http_slice_module --with-threads --add-dynamic-module=/home/clp/packaging/nginx/tmp/nginx-1.21.4/debian/modules/ngx-brotli --add-dynamic-module=/home/clp/packaging/nginx/tmp/nginx-1.21.4/debian/modules/ngx-pagespeed --with-http_addition_module --with-http_geoip_module=dynamic --with-http_gunzip_module --with-http_gzip_static_module --with-http_image_filter_module=dynamic --with-http_sub_module --with-http_xslt_module=dynamic --with-stream=dynamic --with-stream_ssl_module --with-stream_ssl_preread_module --with-mail=dynamic --with-mail_ssl_module --add-dynamic-module=/home/clp/packaging/nginx/tmp/nginx-1.21.4/debian/modules/http-auth-pam --add-dynamic-module=/home/clp/packaging/nginx/tmp/nginx-1.21.4/debian/modules/http-dav-ext --add-dynamic-module=/home/clp/packaging/nginx/tmp/nginx-1.21.4/debian/modules/http-echo --add-dynamic-module=/home/clp/packaging/nginx/tmp/nginx-1.21.4/debian/modules/http-upstream-fair --add-dynamic-module=/home/clp/packaging/nginx/tmp/nginx-1.21.4/debian/modules/http-subs-filter

How to reproduce

To Reproduce

  1. Have a working CloudPanel 2.5.2 server on Ubuntu 22.04 (aarch64).
  2. Create a new site (e.g., a WordPress site).
  3. Nginx will fail to restart/reload.
  4. Run nginx -t to see the cascade of errors, starting with invalid parameter "quic".

Possible Solution

Workaround / Manual Fix

To get the site working, the vhost file generated by CloudPanel must be manually edited to remove the incompatible directives and add the compatible ones.

This involves:

  1. Commenting out the quic listen lines.
  2. Commenting out the http2 on; and http3 off; lines.
  3. Adding http2 to the listen 443 ssl lines (which this Nginx build does support).
  4. Commenting out the include for the non-existent /etc/nginx/global_settings file.

Here is a diff of the generated file vs. the working file:

 server {
   listen 80;
   listen [::]:80;
-  listen 443 quic;
-  listen 443 ssl;
-  listen [::]:443 quic;
-  listen [::]:443 ssl;
-  http2 on;
-  http3 off;
+  listen 443 ssl http2;
+  listen [::]:443 ssl http2;
   {{ssl_certificate_key}}
   {{ssl_certificate}}
   server_name www.example.com;
@@ -17,13 +13,11 @@
 server {
   listen 80;
   listen [::]:80;
-  listen 443 quic;
-  listen 443 ssl;
-  listen [::]:443 quic;
-  listen [::]:443 ssl;
-  http2 on;
-  http3 off;
+  listen 443 ssl http2;
+  listen [::]:443 ssl http2;
   {{ssl_certificate_key}}
   {{ssl_certificate}}
   server_name example.com www1.example.com;
@@ -107,7 +101,7 @@
  server_name example.com www1.example.com;
  {{root}}
 
- include /etc/nginx/global_settings;
+ # include /etc/nginx/global_settings;
 
  try_files $uri $uri/ /index.php?$args;
  index index.php index.html;

Proposed Solution

The Nginx binary provided in the CloudPanel aarch64 repository for Jammy should be re-compiled with HTTP/3 support (--with-http_v3_module) to match the vhost templates generated

Additional Context

No response

*Originally created by @w3K-one on 10/27/2025* ### CloudPanel version(s) affected 2.5.2 ### Description ### Bug Description On a CloudPanel 2.5.2 installation running on Ubuntu 22.04.5 LTS (aarch64/ARM64), Nginx fails to start after a new site is created and the server is restarted. One can also see the failures if vhost is edited on the CloudPanel web interface. The error log (and `nginx -t`) shows `nginx: [emerg] invalid parameter "quic"`. This appears to be a version mismatch: 1. The CloudPanel 2.5.2 **frontend** generates new vhost files with HTTP/3 (`quic`, `http3 off;`) directives. 2. The CloudPanel **package repository** (`d2xpdm4jldf31f.cloudfront.net`) provides an Nginx binary (`1.21.4-15+clp-jammy`) that was **not** compiled with HTTP/3 support (`--with-http_v3_module`). 3. The new vhost template also tries to `include /etc/nginx/global_settings`, which does not exist in this package. ### Environment * **CloudPanel Version:** 2.5.2 * **Operating System:** Ubuntu 22.04.5 LTS (Jammy Jellyfish) * **Architecture:** `aarch64` (ARM64) * **Nginx Version:** `nginx/1.21.4` (Full package: `1.21.4-15+clp-jammy`) ### Nginx Build Configuration (`nginx -V`) The installed Nginx build is missing the required HTTP/3 module. Note the presence of `--with-http_v2_module` but the **absence** of `--with-http_v3_module`. ``` nginx version: nginx/1.21.4 built with OpenSSL 3.0.2 15 Mar 2022 TLS SNI support enabled configure arguments: --with-cc-opt='-g -O2 -ffile-prefix-map=/home/clp/packaging/nginx/tmp/nginx-1.21.4=. -flto=auto -ffat-lto-objects -flto=auto -ffat-lto-objects -fstack-protector-strong -Wformat -Werror=format-security -fPIC -Wdate-time -D_FORTIFY_SOURCE=2' --with-ld-opt='-Wl,-Bsymbolic-functions -flto=auto -ffat-lto-objects -flto=auto -Wl,-z,relro -Wl,-z,now -fPIC' --prefix=/usr/share/nginx --conf-path=/etc/nginx/nginx.conf --http-log-path=/var/log/nginx/access.log --error-log-path=/var/log/nginx/error.log --lock-path=/var/lock/nginx.lock --pid-path=/run/nginx.pid --modules-path=/usr/lib/nginx/modules --http-client-body-temp-path=/var/lib/nginx/body --http-fastcgi-temp-path=/var/lib/nginx/fastcgi --http-proxy-temp-path=/var/lib/nginx/proxy --http-scgi-temp-path=/var/lib/nginx/scgi --http-uwsgi-temp-path=/var/lib/nginx/uwsgi --with-debug --with-pcre-jit --with-http_ssl_module --with-http_stub_status_module --with-http_realip_module --with-http_auth_request_module --with-http_v2_module --with-http_dav_module --with-http_slice_module --with-threads --add-dynamic-module=/home/clp/packaging/nginx/tmp/nginx-1.21.4/debian/modules/ngx-brotli --add-dynamic-module=/home/clp/packaging/nginx/tmp/nginx-1.21.4/debian/modules/ngx-pagespeed --with-http_addition_module --with-http_geoip_module=dynamic --with-http_gunzip_module --with-http_gzip_static_module --with-http_image_filter_module=dynamic --with-http_sub_module --with-http_xslt_module=dynamic --with-stream=dynamic --with-stream_ssl_module --with-stream_ssl_preread_module --with-mail=dynamic --with-mail_ssl_module --add-dynamic-module=/home/clp/packaging/nginx/tmp/nginx-1.21.4/debian/modules/http-auth-pam --add-dynamic-module=/home/clp/packaging/nginx/tmp/nginx-1.21.4/debian/modules/http-dav-ext --add-dynamic-module=/home/clp/packaging/nginx/tmp/nginx-1.21.4/debian/modules/http-echo --add-dynamic-module=/home/clp/packaging/nginx/tmp/nginx-1.21.4/debian/modules/http-upstream-fair --add-dynamic-module=/home/clp/packaging/nginx/tmp/nginx-1.21.4/debian/modules/http-subs-filter ``` ### How to reproduce ### To Reproduce 1. Have a working CloudPanel 2.5.2 server on Ubuntu 22.04 (aarch64). 2. Create a new site (e.g., a WordPress site). 3. Nginx will fail to restart/reload. 4. Run `nginx -t` to see the cascade of errors, starting with `invalid parameter "quic"`. ### Possible Solution ### Workaround / Manual Fix To get the site working, the vhost file generated by CloudPanel must be manually edited to remove the incompatible directives and add the compatible ones. This involves: 1. Commenting out the `quic` listen lines. 2. Commenting out the `http2 on;` and `http3 off;` lines. 3. Adding `http2` to the `listen 443 ssl` lines (which this Nginx build *does* support). 4. Commenting out the include for the non-existent `/etc/nginx/global_settings` file. Here is a `diff` of the generated file vs. the working file: ```diff server { listen 80; listen [::]:80; - listen 443 quic; - listen 443 ssl; - listen [::]:443 quic; - listen [::]:443 ssl; - http2 on; - http3 off; + listen 443 ssl http2; + listen [::]:443 ssl http2; {{ssl_certificate_key}} {{ssl_certificate}} server_name www.example.com; @@ -17,13 +13,11 @@ server { listen 80; listen [::]:80; - listen 443 quic; - listen 443 ssl; - listen [::]:443 quic; - listen [::]:443 ssl; - http2 on; - http3 off; + listen 443 ssl http2; + listen [::]:443 ssl http2; {{ssl_certificate_key}} {{ssl_certificate}} server_name example.com www1.example.com; @@ -107,7 +101,7 @@ server_name example.com www1.example.com; {{root}} - include /etc/nginx/global_settings; + # include /etc/nginx/global_settings; try_files $uri $uri/ /index.php?$args; index index.php index.html; ``` ### Proposed Solution The Nginx binary provided in the CloudPanel `aarch64` repository for Jammy should be re-compiled with HTTP/3 support (`--with-http_v3_module`) to match the vhost templates generated ### Additional Context _No response_
Sign in to join this conversation.