You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Nginx转发WebSocket时丢失Authorization JWT头问题求助

Nginx反向代理WebSocket时Authorization头丢失的原因及解决方法

核心原因

问题出在Nginx配置中,WebSocket握手阶段的Authorization头未被显式转发到后端服务。

WebSocket连接的建立依赖HTTP GET握手请求,虽然这个请求本质是HTTP请求,但如果你的Nginx配置中,针对WebSocket的location块没有显式配置proxy_set_header Authorization $http_authorization;,Nginx不会自动转发这个自定义头;而你的HTTP端点配置中刚好包含了该转发规则,就会出现仅WebSocket请求丢失头的情况。

排查与修复步骤

  1. 检查WebSocket对应的Nginx location配置
    找到配置中对应/chat的location块,确认是否存在以下关键配置:

    location /chat {
        proxy_pass http://127.0.0.1:8081/chat;
        # WebSocket必须的升级配置
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        proxy_set_header Host $host;
        # 显式转发Authorization头到后端
        proxy_set_header Authorization $http_authorization;
    }
    

    其中proxy_set_header Authorization $http_authorization;是解决问题的核心——Nginx通过这个指令将客户端请求中的Authorization头原样转发到后端服务。

  2. 排除其他干扰配置

    • 检查是否存在proxy_hide_header Authorization;指令,该指令若误配置在请求转发环节,会导致头无法正常传递;
    • 确认没有用空值覆盖Authorization头,比如proxy_set_header Authorization "";这类错误配置。
  3. 验证客户端请求
    通过浏览器开发者工具的Network面板,找到WebSocket的握手请求,查看请求头中是否包含Authorization,确保客户端确实发送了这个头。如果客户端未发送,需要检查WebSocket实例的初始化代码是否正确设置了请求头。

内容的提问来源于stack exchange,提问作者Kerasinos Apps

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.23 02:36:22