The error nginx: [emerg] invalid parameter "quic" usually means that the Nginx version you're using does not have support for QUIC and HTTP/3, or that it's not compiled with the necessary modules and libraries.
Here’s a checklist to troubleshoot and resolve the issue:
1. Check Nginx Version
QUIC and HTTP/3 support were introduced starting with Nginx 1.25.0 (released in June 2023). Ensure your Nginx version is up-to-date.
To check your version:
bash
nginx -v
If your version is older than 1.25.0, you'll need to upgrade.
2. Ensure Nginx is Built with QUIC Support
Nginx does not enable QUIC and HTTP/3 by default. It requires specific modules and libraries:
- OpenSSL 1.1.1 or later (or a compatible fork like BoringSSL).
- The Nginx binary must be compiled with the
--with-http_v3_moduleoption.
You can check your build configuration using:
bash
nginx -V
Look for the --with-http_v3_module option in the output. If it’s missing, you’ll need to compile Nginx manually with QUIC support.
3. Install Required Dependencies
To compile Nginx with QUIC:
- Install a supported version of OpenSSL or BoringSSL.
-
Compile Nginx with the necessary flags:
bash
./configure --with-http_v3_module --with-openssl=path/to/openssl
4. Check Your Configuration
Ensure your nginx.conf contains the proper directives to enable QUIC. A minimal QUIC configuration might look like this:
nginx
server { listen 443 ssl http2; # HTTP/2 over TLS listen 443 quic; # Enable QUIC ssl_certificate /path/to/certificate.pem; ssl_certificate_key /path/to/private.key; ssl_protocols TLSv1.3; # QUIC requires TLS 1.3 ssl_prefer_server_ciphers off; add_header Alt-Svc 'h3-23=":443"; ma=86400'; # Advertise HTTP/3 support add_header X-UA-Compatible 'IE=edge'; http2_push_preload on; # Optional, for better performance with HTTP/2 }
5. Restart Nginx
After updating the configuration, restart Nginx to apply the changes:
bash
sudo nginx -s reload
6. Verify QUIC Support
You can verify QUIC support using tools like:
- HTTP/3 Test
-
Command-line tools like
curl(with HTTP/3 support):bash
curl -I --http3 https://your-domain.com