You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
After Docker container restart/redeploy of jc21/nginx-proxy-manager:latest, NPM regenerates all proxy_host/<ID>.conf files from templates. The database has allow_websocket_upgrade=1 correctly set, but the generated nginx configuration is missing the WebSocket upgrade headers:
Re-saving the proxy host via the Web UI also does not fix it — the config is regenerated but the WS headers are still absent. Manually injecting the headers into the config file (then nginx -s reload) is the only reliable workaround.
To Reproduce
Create a proxy host with "Websocket Support" enabled (DB confirmed: allow_websocket_upgrade=1)
Verify the initial config has WS headers → WebSocket connections work
Restart the NPM container: docker restart npm
Check the generated config at /data/nginx/proxy_host/<ID>.conf → WS headers are gone
Try re-saving via NPM Web UI → config regenerated, headers still missing
Only manual injection of the three proxy_set_header lines into the config file restores functionality
Expected behavior
When allow_websocket_upgrade=1 is set in the DB, the template engine (/app/templates/proxy_host.conf) should consistently generate:
The issue appears to be in the EJS template rendering pipeline where the allow_websocket_upgrade == 1 condition fails to emit WS headers during config regeneration
Workaround: Manual injection of headers into /data/nginx/proxy_host/<ID>.conf + nginx -s reload
Once injected manually, the headers persist until the next container restart
Checklist
jc21/nginx-proxy-manager:latestDescribe the bug
After Docker container restart/redeploy of
jc21/nginx-proxy-manager:latest, NPM regenerates allproxy_host/<ID>.conffiles from templates. The database hasallow_websocket_upgrade=1correctly set, but the generated nginx configuration is missing the WebSocket upgrade headers:Re-saving the proxy host via the Web UI also does not fix it — the config is regenerated but the WS headers are still absent. Manually injecting the headers into the config file (then
nginx -s reload) is the only reliable workaround.To Reproduce
allow_websocket_upgrade=1)docker restart npm/data/nginx/proxy_host/<ID>.conf→ WS headers are goneproxy_set_headerlines into the config file restores functionalityExpected behavior
When
allow_websocket_upgrade=1is set in the DB, the template engine (/app/templates/proxy_host.conf) should consistently generate:This should survive container restarts and config regeneration.
Environment
jc21/nginx-proxy-manager:latest(pulled July 2026)allow_websocket_upgrade=1for the proxy hostAdditional context
allow_websocket_upgrade == 1condition fails to emit WS headers during config regeneration/data/nginx/proxy_host/<ID>.conf+nginx -s reload