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

部署Socket.IO应用时Nginx代理下的access_token认证问题

Socket.IO + Nginx代理下的认证令牌传递问题

环境配置

  • 前后端应用采用Socket.IO实现实时通信
  • 前端通过access_token请求头完成Socket连接认证

本地正常情况

前端传递access_token后,后端在握手阶段能正常获取到该请求头,示例如下:

handshake: {
    headers: {
      host: 'localhost:3000',
      connection: 'keep-alive',
      'sec-ch-ua': '"Not/A)Brand";v="99", "Google Chrome";v="115", "Chromium";v="115"',
      accept: '*/*',
      dnt: '1',
      acces_token: 'mytokenvalue',
      'sec-ch-ua-mobile': '?0',
      'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/115.0.0.0 Safari/537.36',
      'sec-ch-ua-platform': '"Windows"',
      'sec-fetch-site': 'same-origin',
      'sec-fetch-mode': 'cors',
      'sec-fetch-dest': 'empty',
      referer: 'http://localhost:3000/admin',
      'accept-encoding': 'gzip, deflate, br',
      'accept-language': 'en-IN,en-GB;q=0.9,en-US;q=0.8,en;q=0.7'
    },
}

部署后异常情况

通过K8s Ingress的Nginx代理后,后端无法接收access_token令牌,导致Socket认证失败。

已尝试的配置

1. 静态令牌配置(有效)

设置静态令牌值时,后端能正常收到:

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: my-ingress
  annotations:
    nginx.ingress.kubernetes.io/configuration-snippet: |
      proxy_set_header acces_token "MyToken";
spec:
  # ... 其他Ingress配置

2. 动态获取令牌配置(无效)

尝试动态获取请求中的令牌,但后端无法收到:

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: my-ingress
  annotations:
    nginx.ingress.kubernetes.io/configuration-snippet: |
      proxy_set_header acces_token "$http_x_acces_token";
spec:
  # ... 其他Ingress配置

求助需求

恳请提供解决该认证问题的思路或建议。


内容的提问来源于stack exchange,提问作者Prathyu Prasad

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 03:56:10