From f77582fdcdbd98e456352962735e5bfb7be21b78 Mon Sep 17 00:00:00 2001 From: Daniel Bedeleanu Date: Thu, 23 Apr 2026 15:24:27 +0300 Subject: [PATCH] fix(09): improve Caddy WebSocket support for Next.js HMR --- .standalone.pid | 6 +++--- Caddyfile.standalone | 12 ++++++++++-- backups/ainventory_2026-04-23_15-19-55.tar.gz | Bin 0 -> 28954 bytes 3 files changed, 13 insertions(+), 5 deletions(-) create mode 100644 backups/ainventory_2026-04-23_15-19-55.tar.gz diff --git a/.standalone.pid b/.standalone.pid index 7b648164..ae1c75e0 100644 --- a/.standalone.pid +++ b/.standalone.pid @@ -1,3 +1,3 @@ -834000 -834001 -834015 +834658 +834659 +834673 diff --git a/Caddyfile.standalone b/Caddyfile.standalone index 0f2ac259..bd695940 100644 --- a/Caddyfile.standalone +++ b/Caddyfile.standalone @@ -17,7 +17,15 @@ https://:8919 { on_demand } - reverse_proxy localhost:8917 { + # Next.js HMR Support (WebSocket) + handle /_next/webpack-hmr { + reverse_proxy http://localhost:8917 { + header_up Upgrade {>Upgrade} + header_up Connection {>Connection} + } + } + + reverse_proxy http://localhost:8917 { header_up X-Forwarded-For {remote_host} header_up X-Forwarded-Proto https header_up X-Forwarded-Host {host} @@ -37,7 +45,7 @@ https://:8918 { on_demand } - reverse_proxy localhost:8916 { + reverse_proxy http://localhost:8916 { header_up X-Forwarded-For {remote_host} header_up X-Forwarded-Proto https header_up X-Forwarded-Host {host} diff --git a/backups/ainventory_2026-04-23_15-19-55.tar.gz b/backups/ainventory_2026-04-23_15-19-55.tar.gz new file mode 100644 index 0000000000000000000000000000000000000000..8013ade120b7f1001127f3974bdcfd451313c392 GIT binary patch literal 28954 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 Q$Fo>~jaJL6^S7`52eXL}`Tzg` literal 0 HcmV?d00001