部署应用程序中Nginx代理的Socket.IO身份验证问题

qlvxas9a  于 2023-10-17  发布在  Nginx
关注(0)|答案(1)|浏览(163)

我目前在用Nginx作为代理部署我的Socket.IO应用程序时遇到了一个身份验证问题。在本地,一切都工作正常,我可以使用acces_token头验证套接字连接。然而,在部署之后,令牌在后端上不被识别。
设置:我有一个前端和后端应用程序,我使用Socket.IO进行实时通信。在前端,我发送一个access_token头来验证套接字连接。
问题:当部署应用程序并使用Nginx作为代理时,后端不再识别access_token头。这将导致套接字身份验证失败。
工作环境(Work Environment):in frontend i am passing like this
在后台我是这样得到的

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'
    },

在这里我可以获得acces_token
部署环境(不工作):
[here令牌未接收](https://i.stack.imgur.com/qiwLe.png
因此我们假设其nginx配置问题

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:

当我们添加这个静态值(MyToken)时,它得到...
但是我们需要这个值从请求我们尝试添加这样,

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:
  # ... other Ingress specifications

但没有工作
我将非常感谢任何见解或建议,以帮助我解决这个身份验证问题。感谢您抽出宝贵时间提供帮助。

mrzz3bfm

mrzz3bfm1#

Nginx应该传递所有头文件,如果'proxy_pass_request_headers'是打开的,但默认情况下,带有下划线的头文件会被忽略,请参阅'ignore_invalid_headers'和'下划线_in_headers'设置。

相关问题