A public ingress-nginx snippet was copied into production. Browser requests work until the WebSocket path crosses an extra proxy boundary.
Ingress NGINX returns 400 on WebSocket path because upgrade headers stop at one proxy hop
Normal HTTP requests work, but WebSocket traffic fails because one proxy tier in front of ingress-nginx drops the upgrade semantics.
Scenario
What to check first
- Identify the primary failure signal in the Ingress Protocol Debug scenario.
- Separate visible symptoms from the underlying technical dependency.
- Describe the safest recovery path and the follow-up prevention work.
Checking checklist
- Summarize the current impact and the last known change.
- Collect direct evidence from logs, runtime state, and configuration before changing anything.
- Separate immediate recovery from permanent prevention work.
Recovery and prevention
Trace Upgrade and Connection handling hop by hop before changing backend code.
Questions worth viewing together
Ingress WebSocket troubleshooting scenario based on Stack Overflow and Reddit reports where 400 errors came from dropped upgrade headers. Compare a working HTTP request with a failing WebSocket request at each proxy boundary.
Teams often blame the application when the upgrade headers never reach it.
One missing proxy_set_header can break the entire WebSocket chain through NGINX.
Similar cases seen in the field