首页 > 解决方案 > kuberentes nginx入口websocket 502错误

问题描述

---
kind: Ingress
apiVersion: extensions/v1beta1
metadata:
  name: xxx
  namespace: bob
  annotations:
    rancher.io/globalDNS.hostname: api-v2-xxx
    nginx.ingress.kubernetes.io/proxy-read-timeout: 3600
    nginx.ingress.kubernetes.io/proxy-send-timeout: 3600
    nginx.org/location-snippets: |
      proxy_set_header HOST $host;
      proxy_set_header Host $host;
      proxy_set_header X-Real-IP $remote_addr;
      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
      proxy_set_header X-Forwarded-Proto $scheme;
      proxy_pass_request_headers on;
      proxy_http_version 1.0;
      proxy_set_header Upgrade $http_upgrade;
      proxy_set_header Connection "Upgrade";
spec:
  rules:
    - host: api-v2-xxx.microsoft.com
      http:
        paths:
          - path: /
            backend:
              serviceName: xxx
              servicePort: xxx-api-port
          - path: /ws/
            backend:
              serviceName: xxx
              servicePort: xxx-ws-port

---
kind: Service
apiVersion: v1
metadata:
  name: xxx
  namespace: bob
spec:
  selector:
    com.microsoft/application.name: xxx
  ports:
    - name: xxx-api-port
      protocol: TCP
      port: 80
      targetPort: 3010
    - name: xxx-ws-port
      protocol: TCP
      port: 81
      targetPort: 31255

我试图让在端口上运行的 websocket31255工作,但我得到的只是 502 错误。这nginx.org/location-snippets是我在其他一切正常的服务器部署中成功使用的片段。

我检查了 docker,一切正常,端口暴露,k8s 服务正在转发端口,唯一的问题是入口。我还在单个 URL 上尝试了 2 个路径,结果相同:/api/ 有效,/ws/ 无效

API 端口有效,websocket 无效。

标签: kuberneteskubernetes-ingressnginx-ingress

解决方案


推荐阅读