{"id":859,"date":"2026-08-11T23:50:32","date_gmt":"2026-08-11T23:50:32","guid":{"rendered":"https:\/\/virtualserversvps.com\/blog\/?p=859"},"modified":"2026-08-11T23:50:32","modified_gmt":"2026-08-11T23:50:32","slug":"how-to-enable-http3-and-quic-nginx-caddy","status":"publish","type":"post","link":"https:\/\/virtualserversvps.com\/blog\/how-to-enable-http3-and-quic-nginx-caddy\/","title":{"rendered":"How to Enable HTTP\/3 and QUIC on Nginx and Caddy"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">HTTP\/3 runs over QUIC, a UDP-based transport with TLS 1.3 built in. The payoff for your visitors is concrete: connection setup takes one round trip instead of two, repeat visits can skip the handshake entirely with 0-RTT, and head-of-line blocking disappears because each stream is independent. Every major browser has supported HTTP\/3 for years, so enabling it is mostly a server configuration question. Here is how to turn it on for the two most common web servers on a VPS \u2014 Nginx and Caddy.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Prerequisites<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">You need three things: a TLS certificate (Let&#8217;s Encrypt works fine \u2014 QUIC requires TLS 1.3), UDP port 443 reachable, and a web server build that includes QUIC support. Nginx needs version 1.25.0 or newer compiled with <code>--with-http_v3_module<\/code>; many current distro packages include it, but check with <code>nginx -V 2&gt;&amp;1 | tr ' ' '\\n' | grep http_v3<\/code>. Caddy 2.6 and newer include HTTP\/3 out of the box.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Enabling HTTP\/3 in Nginx<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">In your server block, listen on UDP 443 with the QUIC protocol alongside the normal TLS listener. Use <code>reuseport<\/code> so QUIC connections distribute across worker processes, and advertise the new protocol with the <code>Alt-Svc<\/code> header so browsers know to try it:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>server {\n    listen 443 ssl;\n    listen 443 quic reuseport;\n    http2 on;\n\n    ssl_protocols TLSv1.2 TLSv1.3;\n    ssl_certificate     \/etc\/letsencrypt\/live\/example.com\/fullchain.pem;\n    ssl_certificate_key \/etc\/letsencrypt\/live\/example.com\/privkey.pem;\n\n    add_header Alt-Svc 'h3=\":443\"; ma=86400' always;\n    # ... rest of your server block ...\n}<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Validate and reload:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>nginx -t &amp;&amp; sudo systemctl reload nginx<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Keep <code>http2 on;<\/code> \u2014 HTTP\/3 is an addition, not a replacement. Browsers that cannot reach UDP 443 (some corporate networks block it) will silently fall back to HTTP\/2 over TCP.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Enabling HTTP\/3 in Caddy<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Caddy is the easy path: since version 2.6, any site served over HTTPS automatically gets HTTP\/3, including the Alt-Svc advertisement. There is no configuration flag to set \u2014 if your Caddyfile has a site block with a domain and you can reach <code>https:\/\/your-domain<\/code> over TCP 443, QUIC is already listening on UDP 443. Confirm the version with <code>caddy version<\/code> and update if it is older than 2.6.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Firewall and Network Notes<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Most firewalls only open TCP 443 by default, and QUIC needs UDP 443. With ufw: <code>sudo ufw allow 443\/udp<\/code>. If your VPS sits behind a cloud provider security group, add a UDP 443 rule there too. Some NAT or DPI equipment drops QUIC; that is fine \u2014 clients fall back to HTTP\/2 \u2014 but it means your HTTP\/3 adoption rate will vary by visitor region. <a href=\"https:\/\/virtualserversvps.com\/#providers\">Compare providers side by side in our VPS comparison table<\/a> if you need a host with clean UDP routing and low loss.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Verifying HTTP\/3 Works<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Three ways to confirm. From the server, use a curl build with QUIC support (Debian\/Ubuntu package <code>curl<\/code> 8.2+ compiled with ngtcp2):<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>curl --http3 -I https:\/\/example.com<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">In Chrome or Edge, open DevTools, click the Network tab, and look at the Protocol column \u2014 it should show <code>h3<\/code> for resources served over QUIC (reload a couple of times, since the first load may still use HTTP\/2). Online checkers such as http3check.net report the negotiated protocol from an external vantage point. Finally, confirm the advertisement is present: <code>curl -sI https:\/\/example.com | grep -i alt-svc<\/code>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Troubleshooting<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">If the protocol column never shows <code>h3<\/code>, work through these in order. First, confirm the server is actually listening on UDP 443: <code>sudo ss -ulpn | grep 443<\/code> should show your web server&#8217;s process. Second, verify UDP 443 is open end to end \u2014 a host firewall rule is not the same as a cloud security group, and both must allow it. Third, check that the Alt-Svc header is present on the TLS response; browsers only try QUIC after seeing it, and an <code>always<\/code> parameter matters because some proxies strip the header on cached responses. Finally, test from a different network: if QUIC works from your phone&#8217;s mobile data but not your office, a middlebox is dropping UDP, and there is nothing to fix on the server side.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Caveats Worth Knowing<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">0-RTT data is replayable, so QUIC stacks only send idempotent requests in the early data \u2014 keep that in mind for any custom QUIC applications. On networks that drop UDP or suffer high loss, HTTP\/3 can feel worse than HTTP\/2; the fallback handles this automatically, and <code>Alt-Svc<\/code> with a reasonable <code>ma<\/code> lets browsers re-evaluate periodically. There is also a small CPU cost for QUIC&#8217;s encryption per packet, which matters only on very high-traffic boxes.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Bottom Line<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">HTTP\/3 is a low-risk, measurable win: one UDP firewall rule and a small config change on Nginx, or zero config on Caddy. Verify with curl and DevTools, keep HTTP\/2 as the fallback, and monitor your protocol mix over a week. If you are also squeezing latency elsewhere \u2014 TLS 1.3 session resumption, BBR, or a closer data center \u2014 the gains compound; <a href=\"https:\/\/virtualserversvps.com\/#features\">see the full specs and pricing on the main site<\/a> to check which hosts offer the network options you need.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>HTTP\/3 runs over QUIC, a UDP-based transport with TLS 1.3 built in. The payoff for your visitors is concrete: connection setup takes one round trip instead of two, repeat visits&#8230;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"iawp_total_views":0,"footnotes":""},"categories":[3,1],"tags":[],"class_list":["post-859","post","type-post","status-publish","format-standard","hentry","category-performance-optimization","category-vps-guides-tutorials"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v26.1 (Yoast SEO v26.1) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>How to Enable HTTP\/3 and QUIC on Nginx and Caddy - Virtual Servers VPS Blog<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/virtualserversvps.com\/blog\/how-to-enable-http3-and-quic-nginx-caddy\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"How to Enable HTTP\/3 and QUIC on Nginx and Caddy\" \/>\n<meta property=\"og:description\" content=\"How to Enable HTTP\/3 and QUIC on Nginx and Caddy\" \/>\n<meta property=\"og:url\" content=\"https:\/\/virtualserversvps.com\/blog\/how-to-enable-http3-and-quic-nginx-caddy\/\" \/>\n<meta property=\"og:site_name\" content=\"Virtual Servers VPS Blog\" \/>\n<meta property=\"article:published_time\" content=\"2026-08-11T23:50:32+00:00\" \/>\n<meta name=\"author\" content=\"Virtual-Servers-Vps-Editor\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Virtual-Servers-Vps-Editor\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"4 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/virtualserversvps.com\/blog\/how-to-enable-http3-and-quic-nginx-caddy\/\",\"url\":\"https:\/\/virtualserversvps.com\/blog\/how-to-enable-http3-and-quic-nginx-caddy\/\",\"name\":\"How to Enable HTTP\/3 and QUIC on Nginx and Caddy - Virtual Servers VPS Blog\",\"isPartOf\":{\"@id\":\"https:\/\/virtualserversvps.com\/blog\/#website\"},\"datePublished\":\"2026-08-11T23:50:32+00:00\",\"author\":{\"@id\":\"https:\/\/virtualserversvps.com\/blog\/#\/schema\/person\/82a299a8284a66ff49f97c74684724a0\"},\"breadcrumb\":{\"@id\":\"https:\/\/virtualserversvps.com\/blog\/how-to-enable-http3-and-quic-nginx-caddy\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/virtualserversvps.com\/blog\/how-to-enable-http3-and-quic-nginx-caddy\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/virtualserversvps.com\/blog\/how-to-enable-http3-and-quic-nginx-caddy\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/virtualserversvps.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"How to Enable HTTP\/3 and QUIC on Nginx and Caddy\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/virtualserversvps.com\/blog\/#website\",\"url\":\"https:\/\/virtualserversvps.com\/blog\/\",\"name\":\"Virtual Servers VPS Blog\",\"description\":\"\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/virtualserversvps.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/virtualserversvps.com\/blog\/#\/schema\/person\/82a299a8284a66ff49f97c74684724a0\",\"name\":\"Virtual-Servers-Vps-Editor\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/virtualserversvps.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/d820b15f1cd028e97610d9adf536df7be5cb6423869967037d468d5355fa003f?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/d820b15f1cd028e97610d9adf536df7be5cb6423869967037d468d5355fa003f?s=96&d=mm&r=g\",\"caption\":\"Virtual-Servers-Vps-Editor\"},\"sameAs\":[\"https:\/\/virtualserversvps.com\/blog\"],\"url\":\"https:\/\/virtualserversvps.com\/blog\/author\/virtualserversvps\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"How to Enable HTTP\/3 and QUIC on Nginx and Caddy - Virtual Servers VPS Blog","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/virtualserversvps.com\/blog\/how-to-enable-http3-and-quic-nginx-caddy\/","og_locale":"en_US","og_type":"article","og_title":"How to Enable HTTP\/3 and QUIC on Nginx and Caddy","og_description":"How to Enable HTTP\/3 and QUIC on Nginx and Caddy","og_url":"https:\/\/virtualserversvps.com\/blog\/how-to-enable-http3-and-quic-nginx-caddy\/","og_site_name":"Virtual Servers VPS Blog","article_published_time":"2026-08-11T23:50:32+00:00","author":"Virtual-Servers-Vps-Editor","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Virtual-Servers-Vps-Editor","Est. reading time":"4 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/virtualserversvps.com\/blog\/how-to-enable-http3-and-quic-nginx-caddy\/","url":"https:\/\/virtualserversvps.com\/blog\/how-to-enable-http3-and-quic-nginx-caddy\/","name":"How to Enable HTTP\/3 and QUIC on Nginx and Caddy - Virtual Servers VPS Blog","isPartOf":{"@id":"https:\/\/virtualserversvps.com\/blog\/#website"},"datePublished":"2026-08-11T23:50:32+00:00","author":{"@id":"https:\/\/virtualserversvps.com\/blog\/#\/schema\/person\/82a299a8284a66ff49f97c74684724a0"},"breadcrumb":{"@id":"https:\/\/virtualserversvps.com\/blog\/how-to-enable-http3-and-quic-nginx-caddy\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/virtualserversvps.com\/blog\/how-to-enable-http3-and-quic-nginx-caddy\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/virtualserversvps.com\/blog\/how-to-enable-http3-and-quic-nginx-caddy\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/virtualserversvps.com\/blog\/"},{"@type":"ListItem","position":2,"name":"How to Enable HTTP\/3 and QUIC on Nginx and Caddy"}]},{"@type":"WebSite","@id":"https:\/\/virtualserversvps.com\/blog\/#website","url":"https:\/\/virtualserversvps.com\/blog\/","name":"Virtual Servers VPS Blog","description":"","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/virtualserversvps.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/virtualserversvps.com\/blog\/#\/schema\/person\/82a299a8284a66ff49f97c74684724a0","name":"Virtual-Servers-Vps-Editor","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/virtualserversvps.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/d820b15f1cd028e97610d9adf536df7be5cb6423869967037d468d5355fa003f?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/d820b15f1cd028e97610d9adf536df7be5cb6423869967037d468d5355fa003f?s=96&d=mm&r=g","caption":"Virtual-Servers-Vps-Editor"},"sameAs":["https:\/\/virtualserversvps.com\/blog"],"url":"https:\/\/virtualserversvps.com\/blog\/author\/virtualserversvps\/"}]}},"_links":{"self":[{"href":"https:\/\/virtualserversvps.com\/blog\/wp-json\/wp\/v2\/posts\/859","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/virtualserversvps.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/virtualserversvps.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/virtualserversvps.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/virtualserversvps.com\/blog\/wp-json\/wp\/v2\/comments?post=859"}],"version-history":[{"count":2,"href":"https:\/\/virtualserversvps.com\/blog\/wp-json\/wp\/v2\/posts\/859\/revisions"}],"predecessor-version":[{"id":865,"href":"https:\/\/virtualserversvps.com\/blog\/wp-json\/wp\/v2\/posts\/859\/revisions\/865"}],"wp:attachment":[{"href":"https:\/\/virtualserversvps.com\/blog\/wp-json\/wp\/v2\/media?parent=859"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/virtualserversvps.com\/blog\/wp-json\/wp\/v2\/categories?post=859"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/virtualserversvps.com\/blog\/wp-json\/wp\/v2\/tags?post=859"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}