From 33e1ff290735b53f3bdc7daf859185e34014cf47 Mon Sep 17 00:00:00 2001 From: admin Date: Tue, 10 Mar 2026 10:47:59 -0600 Subject: [PATCH] Add WebSocket upgrade headers to nginx API proxy blocks for docs collaboration The /api/ location blocks in both default.conf and services.conf templates were missing Upgrade/Connection headers, preventing the Hocuspocus WebSocket connection from establishing through nginx. Co-Authored-By: Claude Opus 4.6 --- nginx/conf.d/default.conf.template | 6 +++++- nginx/conf.d/services.conf.template | 6 +++++- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/nginx/conf.d/default.conf.template b/nginx/conf.d/default.conf.template index 0f7db57..febcb9c 100644 --- a/nginx/conf.d/default.conf.template +++ b/nginx/conf.d/default.conf.template @@ -79,8 +79,8 @@ server { # Rewrites /media/* to /api/* (matches Vite dev proxy behavior) # Uses variable proxy_pass for runtime DNS resolution after container restarts location /media/ { - rewrite ^/media/(.*) /api/$1 break; set $upstream_media_default http://changemaker-media-api:4100; + rewrite ^/media/(.*) /api/$1 break; proxy_pass $upstream_media_default; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; @@ -126,5 +126,9 @@ server { proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; + + # WebSocket support (docs collaboration) + proxy_set_header Upgrade $http_upgrade; + proxy_set_header Connection "upgrade"; } } diff --git a/nginx/conf.d/services.conf.template b/nginx/conf.d/services.conf.template index 0d00d17..3ec7c19 100644 --- a/nginx/conf.d/services.conf.template +++ b/nginx/conf.d/services.conf.template @@ -444,8 +444,8 @@ server { # Rewrites /media/* to /api/* (matches Vite dev proxy behavior) # Uses variable proxy_pass for runtime DNS resolution after container restarts location /media/ { - rewrite ^/media/(.*) /api/$1 break; set $upstream_media_app http://changemaker-media-api:4100; + rewrite ^/media/(.*) /api/$1 break; proxy_pass $upstream_media_app; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; @@ -502,6 +502,10 @@ server { proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; + + # WebSocket support (docs collaboration) + proxy_set_header Upgrade $http_upgrade; + proxy_set_header Connection "upgrade"; } }